Middle
Java-ში შიდა (inner) და შიგნით (nested) კლასების შორის რა განსხვავებაა?
sobes.tech AI
პასუხი AI-სგან
-
Ներքին դասեր (Nested classes): Արտաքին դասի ստատիկ անդամներ։ Չեն ունենում ուղղակի մուտք դեպի ոչ-ստատիկ անդամներ (մասեր և մեթոդներ) արտաքին դասի, միայն արտաքին դասի օրինակով։ Հայտարարում են
staticբանալի բառով: -
Ներքին դասեր (Inner classes): Նիստատիկ անդամներ արտաքին դասի։ Ունեն լիարժեք մուտք բոլոր անդամներին (դինամիկ և ոչ-դինամիկ) արտաքին դասի, ներառյալ մասնավորները։ Ներքին դասի օրինակ ստեղծելու համար անհրաժեշտ է արտաքին դասի օրինակ։ Չեն օգտագործում
staticբանալի բառը:
Օրինակ:
// Արտաքին դաս
class Outer {
private int outerField = 10;
private static int staticOuterField = 20;
// Դինամիկ ներքին դաս
static class StaticNestedClass {
void display() {
// Միայն դեպի ստատիկ անդամներ արտաքին դասի
System.out.println("Static nested: " + staticOuterField);
// Ներքին անդամներ ուղիղ հասանելի չեն
// System.out.println(outerField); // Կոմպիլյացիոն սխալ
}
}
// Նիստատիկ չհայտարարված ներքին դաս
class InnerClass {
void display() {
// Ամեն անդամի հասանելիություն
System.out.println("Inner: " + outerField);
System.out.println("Inner (static): " + staticOuterField);
}
}
}
// Օգտագործում
public class Main {
public static void main(String[] args) {
// Ստատիկ ներքին դասի օրինակ
Outer.StaticNestedClass staticNested = new Outer.StaticNestedClass();
staticNested.display();
// Ներքին դասի օրինակ ստեղծելու համար անհրաժեշտ է արտաքին դասի օրինակ
Outer outer = new Outer();
Outer.InnerClass inner = outer.new InnerClass();
inner.display();
}
}
| Գծագիր | Ներքին դաս (Nested Class) | Ներքին դաս (Inner Class) |
|---|---|---|
| Բանալի բառ | static |
Չի օգտագործվում |
| Մուտք դեպի արտաքին դասի անդամներ | Միայն ստատիկ անդամներ | Բոլորը |
| Արտաքին դասի օրինակով ստեղծում | Չի անհրաժեշտ | Անհրաժեշտ |
| Կապ արտաքին դասի օրինակին | Չի | Այո |