Junior
Ի՞նչ տեսակների դասեր կան Java-ում։
sobes.tech AI
Պատասխան AI-ից
- Հաճախակի (reguliar / կոնկրետ) դասեր: Կարող են լինել ինստանցիացված, պարունակում են դաշտեր, մեթոդներ, կոնստրուկտորներ:
- Աբստրակտ դասեր: Չեն կարող ուղղակի ինստանցիրվել: Կարող են պարունակել աբստրակտ մեթոդներ (չունեն իրականացման) և սովորական մեթոդներ: Օգտագործվում են ընդհանուր հատկանիշների սահմանման համար ենթակլասների համար:
abstract class AbstractClass { abstract void abstractMethod(); // Աբստրակտ մեթոդ void regularMethod() { System.out.println("Սովորական մեթոդ"); } } - Ներքին դասեր (nested classes): Հայտարարվում են այլ դասի ներսում: Կարող են լինել:
- Ստատիկ ներքին դասեր (static nested classes): Չեն ունենա մուտք դեպի արտաքին դասի ոչ-ստատիկ անդամներ: Ստեղծվում են առանց արտաքին դասի օրինակակի:
class OuterClass { static class StaticNestedClass { // ... } } - Ներքին դասեր (inner classes): ունեն մուտք դեպի բոլոր անդամներ արտաքին դասի (ներառյալ մասնավորները): Կապված են արտաքին դասի օրինակակի հետ:
class OuterClass { class InnerClass { // Մուտք ունի OuterClass անդամներին } } - Տեղական դասեր (local classes): Հայտարարվում են մեթոդի, ցիկլի կամ if բլոկի ներսում: Մուտքը սահմանափակ է նրանց հայտարարած տարածքով:
class OuterClass { void someMethod() { class LocalClass { // Տեղական հայտարարություն } LocalClass obj = new LocalClass(); } } - Անանուն դասեր (anonymous classes): Անուն չունեցող, ստեղծվում են միաժամանակ հայտարարելու կամ ինստանցիացնելու ժամանակ: Օգտագործվում են մեկանգամյա օգտագործման համար:
interface MyInterface { void myMethod(); } MyInterface anon = new MyInterface() { @Override public void myMethod() { System.out.println("Անանուն դաս"); } };
- Ստատիկ ներքին դասեր (static nested classes): Չեն ունենա մուտք դեպի արտաքին դասի ոչ-ստատիկ անդամներ: Ստեղծվում են առանց արտաքին դասի օրինակակի:
- Տվյալների պահոցներ (records) (Java 14-ից սկսած): Կոմպակտ սինտաքսիս անորոշ դասեր հայտարարելու համար, որոնք նախատեսված են տվյալների պահեստավորման համար:
record Person(String name, int age) { // Ավտոմատ գեներացված կոնստրուկտոր, գետեր, հավասարության, hashCode(), toString() }