Middle
Java-да кірістірілген (nested) сыныптар мен ішкі (inner) сыныптар арасындағы айырмашылықтар қандай?
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);
// outerField-ке тікелей қол жеткізу мүмкін емес
// 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 |
Жоқ |
| Сыртқы сыныптың мүшелеріне қол жеткізуі | Тек статикалық | Барлықтары |
| Экземплярды жасау үшін сыртқы сыныптың экземпляры қажет пе | Жоқ | Иә |
| Сыртқы сыныптың экземплярымен байланысы | Жоқ | Иә |