Sobes.tech
Back to questions
Junior — Middle
67

Чем отличаются статический вложенный класс от внутреннего класса в Java?

Answer from AI

sobes.tech AI

Статический вложенный класс в Java — это класс, объявленный внутри другого класса с модификатором static. Он не имеет доступа к нестатическим членам внешнего класса и не требует создания экземпляра внешнего класса для своего создания.

Внутренний (нестатический) класс связан с экземпляром внешнего класса и может обращаться к его нестатическим полям и методам. Для создания внутреннего класса нужен объект внешнего класса.

Пример:

class Outer {
    int x = 10;

    static class StaticNested {
        void print() {
            System.out.println("Статический вложенный класс");
            // Нет доступа к x
        }
    }

    class Inner {
        void print() {
            System.out.println("Внутренний класс, x = " + x);
        }
    }
}

// Использование:
Outer.StaticNested sn = new Outer.StaticNested();
sn.print();

Outer outer = new Outer();
Outer.Inner inner = outer.new Inner();
inner.print();

Таким образом, статический вложенный класс более независим от внешнего, а внутренний класс тесно связан с объектом внешнего класса.