Back to questions
Junior — Middle
76
Чем отличается статический вложенный класс от внутреннего не статического класса в Java?
Companies where asked
СБЕР Бизнес
Answer from AI
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);
}
}
}
Основные отличия:
- Статический вложенный класс не имеет ссылки на экземпляр внешнего класса.
- Внутренний класс всегда связан с экземпляром внешнего класса.
- Для создания внутреннего класса нужен объект внешнего класса, для статического вложенного — нет.