Junior
Ի՞նչ տեսակների դասեր կան Java-ում։
sobes.tech AI
Պատասխան AI-ից
Java-յում կան հետևյալ հիմնական դասերի տեսակները:
-
Սովորական (Standard Class)
- Կարող են պարունակել դաշտեր, մեթոդներ, կոնստրուկտորներ:
- Կարող են ժառանգվել այլ դասերից, եթե չեն հայտարարված որպես
final: - Կարող են իրականացնել ինտերֆեյսներ:
- Հայտարարվում են մուտք գործելու մոդիֆիկատորներով (
public,protected,default,private):
-
Աբստրակտ (Abstract Class)
- Հայտարարվում է
abstractբառով: - Չեն կարող անմիջապես ինստանցիա ստեղծել:
- Կարող են պարունակել աբստրակտ մեթոդներ (առանց իրականացման) և սովորական մեթոդներ:
- Օգտագործվում են ժառանգելու համար; ենթակլասները պետք է տրամադրեն աբստրակտ մեթոդների իրականացումը:
// Աբստրակտ դաս գծի համար abstract class Shape { abstract double area(); // Աբստրակտ մեթոդ տարածքի հաշվարկի համար void display() { // Սովորական մեթոդ System.out.println("This is a shape."); } } - Հայտարարվում է
-
Վերջնական (Final Class)
- Հայտարարվում է
finalբառով: - Չեն կարող ժառանգվել այլ դասերից:
- Օգտագործվում են դասի ընդլայնումը կանխելու, անվտանգության կամ փոփոխության չլինելու համար:
// Վերջնական դաս, որը չի կարող ժառանգվել final class ImmutableString { private final String value; public ImmutableString(String value) { this.value = value; } public String getValue() { return value; } } - Հայտարարվում է
-
Համարային (Enum)
- Հատուկ դասի տեսակ, նախատեսված հաստատված կոնստանտների հավաքածու ներկայացնելու համար:
- Հայտարարվում է
enumբառով: - Դասակարգման կոնստանտները ըստ նախնական արժեքի
public static finalեն: - Կարող են ունենալ դաշտեր, մեթոդներ և կոնստրուկտորներ (թաքնված
privateմոդիֆիկատորով):
// Ուրբաթ օրերի enum enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY } -
Անանուն (Anonymous Class)
- Անուն չունեցող դաս, որը ստեղծվում և ինստանցիա է ստանում միաժամանակ:
- Օգտագործվում են հաճախ ինտերֆեյսների իրականացման կամ դասերի ընդլայնման համար "առավոտ" ժամանակ, երբ անհրաժեշտ է մեկանգամյա օգտագործում:
- Չեն կարող ունենալ բացահայտ կոնստրուկտորներ:
// Անանուն դասի ստեղծում, որը իրականացնում է Runnable ինտերֆեյսը Runnable r = new Runnable() { @Override public void run() { System.out.println("Running in an anonymous class."); } }; -
Ներքին (Nested Class)
- Դասեր, որոնք հայտարարվում են այլ դասի ներսում:
- Կան երկու տեսակ.
- Ստատիկ ներքին դասեր (Static Nested Class): հայտարարվում է
staticբառով: Չեն ունենա մուտք դեպի ոչ-ստատիկ անդամներ արտաքին դասից ուղղակի: - Ներքին դասեր (Inner Class): չեն հայտարարվում որպես
static: ունեն մուտք դեպի բոլոր անդամներ արտաքին դասից, ներառյալprivate: - Պահանջվում է արտաքին դասի օրինակ՝ իրենց օրինակ ստեղծելու համար:
- Ստատիկ ներքին դասեր (Static Nested Class): հայտարարվում է
// Արտաքին դաս class OuterClass { private String outerField = "Outer"; // Ստատիկ ներքին դաս static class StaticNestedClass { void display() { System.out.println("Inside StaticNestedClass."); // Չունի ուղիղ մուտք outerField-ին } } // Ներքին դաս class InnerClass { void display() { System.out.println("Inside InnerClass. outerField: " + outerField); // Մուտք outerField } } } -
Ռեկորդային դասեր (Record - Java 14-ից սկսած)
- Հայտարարվում է
recordբառով: - Օգտագործվում է տվյալների պահեստավորման համար: Կոմպիլյատորը ինքնաբերաբար ստեղծում է կոնստրուկտոր, մուտք գործելու մեթոդներ (
accessor methods),equals(),hashCode()ևtoString(): - Ռեկորդի դաշտերը անգիտակցաբար
finalեն:
// Բնութագրում է 2D կետը ներկայացնող ռեկորդ record Point(int x, int y) { // Կոմպիլյատորը կստեղծի կոնստրուկտոր, x(), y(), equals(), hashCode(), toString() } - Հայտարարվում է