Middle
Ի՞նչ տեսակների ներքին դասեր կան։
sobes.tech AI
Պատասխան AI-ից
Կայքային ներքին դասեր և ոչ կայքային (նստական) ներքին դասեր:
-
Կայքային ներքին դասեր:
- Դեկլարարվում են
staticբանալի բառով: - Հասանելի են միայն արտաքին դասի կայքային անդամներին (գոտիներ և մեթոդներ), ներառյալ մասնավորները:
- Չեն ունենա ուղիղ հասանելիություն արտաքին դասի ոչ կայքային անդամներին:
- Կարող են ստեղծվել առանց արտաքին դասի օրինակ ունենալու:
class Outer { private static int staticVar = 10; private int instanceVar = 20; static class StaticNested { void display() { System.out.println("Կայքային փոփոխական: " + staticVar); // System.out.println("Նմուշային փոփոխական: " + instanceVar); // Կոմպիլյացիայի սխալ } } } - Դեկլարարվում են
-
Ներքին դասեր (նստական չհաշված):
- Դեկլարարվում են առանց
staticբանալի բառի: - Ունեն լիարժեք հասանելիություն բոլոր անդամներին (կայքային և ոչ կայքային) արտաքին դասի, ներառյալ մասնավորները:
- Չեն կարող պարունակել կայքային անդամներ (գոտիներ կամ մեթոդներ), բացի վերջնական հաստատուններից:
- Պահանջվում է արտաքին դասի օրինակ՝ ստեղծելու համար:
class Outer { private static int staticVar = 10; private int instanceVar = 20; class Inner { void display() { System.out.println("Կայքային փոփոխական: " + staticVar); System.out.println("Նմուշային փոփոխական: " + instanceVar); } } } - Դեկլարարվում են առանց
-
Տեղական դասեր:
- Դեկլարարվում են մեթոդների, կոնստրուկտորների կամ ինիցիալիզացիոն բլոկների ներսում:
- Հասանելի են բոլոր վերջնական և արդյունավետ վերջնական տեղական փոփոխականներին, ինչպես նաև արտաքին դասի անդամներին, որտեղ նրանք սահմանված են:
- Դրանց տեսանելիության տարածքը սահմանափակ է այն բլոկով, որտեղ հայտարարվել են:
class Outer { void myMethod() { final int localVar = 5; // Էֆեկտիվ վերջնական class LocalInner { void display() { System.out.println("Տեղական փոփոխական: " + localVar); } } LocalInner local = new LocalInner(); local.display(); } } -
Անանուն դասեր:
- Անուն չունեցող տեղական դասեր:
- Ստեղծվում և.instantly ստեղծվում են միաժամանակ:
- Հաճախ օգտագործվում են ինտերֆեյսների կամ դասերի ընդլայնման համար:
interface MyInterface { void doSomething(); } class Outer { void myMethod() { MyInterface anon = new MyInterface() { @Override public void doSomething() { System.out.println("Անանուն մի բան անում է."); } }; anon.doSomething(); } }
Հիմնական տարբերությունները կայքային և ոչ կայքային (նստական) ներքին դասերի միջև:
| Գծագիր | Կայքային ներքին դաս | Նստական (ոչ կայքային) ներքին դաս |
|---|---|---|
| Բանալի բառ | static |
Չկա |
| Հասանելիություն | Միայն արտաքին դասի կայքային անդամներին | Բոլոր անդամներին արտաքին դասի |
| Օբյեկտի ստեղծում | Բացակայում է արտաքին դասի օբյեկտից | Պահանջվում է արտաքին դասի օբյեկտ |