Вложенные классы в Java делятся на статические и нестатические (внутренние).
Статические вложенные классы:
static.java
Нестатические вложенные классы (внутренние классы):
static.Типы нестатических вложенных классов:
Обычные внутренние классы:
java
Локальные классы:
final или "эффективно final" локальным переменным своей области видимости.java
Анонимные классы:
java
Сравнение типов вложенных классов:
| Тип классf | Модификатор static | Доступ к членам внешнего класса | Создание экземпляра | Область видимости |
|---|---|---|---|---|
| Static Nested Class | Да | Только статическим | Без экземпляра внешнего класса | Внешний класс |
| Regular Inner Class | Нет | Всем | Требует экземпляра внешнего класса | Внешний класс |
| Local Class | Нет | Всем членам внешнего класса + final/effectively final локальным | Внутри метода/блока, где определен | Метод/Блок |
| Anonymous Class | Нет | Всем членам внешнего класса + final/effectively final локальным | В точке создания (без явного new ClassName()) | Точка создания/блок |