Junior — Middle
99
Бағдарламалау тілдерінде статикалық емес және статикалық ішкі сыныптар арасындағы айырмашылықтар қандай?
AI-дан жауап
sobes.tech AI
Java-да ішкі сыныптар екі негізгі түрге бөлінеді: статикалық емес (ішкі сыныптар) және статикалық ішкі сыныптар (static nested classes). Олардың негізгі айырмашылықтары:
-
Статикалық емес ішкі сыныптар:
staticмодификаторы жоқ.- Сыртқы сыныптың өрістеріне және әдістеріне, соның ішінде жеке (private) мүшелеріне де қол жеткізе алады.
- Оны құру үшін сыртқы сыныптың объектісі қажет.
- Егер ішкі сынып нақты бір сыртқы сыныптың экземплярына байланысты болса, қолданады.
-
Статикалық ішкі сыныптар:
staticмодификаторымен жарияланады.- Сыртқы сыныптың экземплярына сілтеме болмайды.
- Сыртқы сыныптың статикалық емес өрістеріне және әдістеріне тікелей қол жеткізе алмайды.
- Сыртқы сыныптың объектісінсіз құрыла алады.
Мысал:
class Outer {
private int outerField = 10;
class Inner {
void print() {
System.out.println("Outer field: " + outerField); // статикалық емес өріске қол жеткізу
}
}
static class StaticNested {
void print() {
// System.out.println(outerField); // Қате, статикалық емес өріске қол жеткізу мүмкін емес
System.out.println("Static nested class");
}
}
}
// Объектілерді құру
Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
Outer.StaticNested staticNested = new Outer.StaticNested();