Sobes.tech
Назад к вопросам
Junior — Middle
75

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

Компании, где спрашивали
СБЕР Бизнес

Ответ от нейросети

sobes.tech AI

Статический вложенный класс (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);
        }
    }
}

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

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