Sobes.tech
Junior — Middle
115

¿En qué se diferencia una clase anidada estática de una clase interna no estática en Java?

Empresas donde se preguntó
СБЕР Бизнес

Respuesta de la IA

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);
        }
    }
}

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

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