Sobes.tech
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();