Sobes.tech
Junior — Middle
113

Was ist der Unterschied zwischen einer statischen verschachtelten Klasse und einer nicht-statischen inneren Klasse in Java?

Unternehmen wurden gefragt
СБЕР Бизнес

Antwort von AI

sobes.tech KI

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

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

Пример:

class Outer {
    private int x = 10;

    static class StaticNested {
        void print() {
            // Нельзя обратиться к x напрямую
            System.out.println("Static nested class");
        }
    }

    class Inner {
        void print() {
            // Можно обратиться к x
            System.out.println("Inner class, x = " + x);
        }
    }
}

Основные отличия:

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