Вложенные классы (nested classes) — это классы, объявленные внутри другого класса. Они бывают статические (static nested classes) и нестатические (inner classes).
Статические вложенные классы:
- Объявляются с модификатором
static.
- Не имеют доступа к нестатическим членам внешнего класса напрямую (только через экземпляр внешнего класса).
- Могут содержать как статические, так и нестатические члены.
- Создаются без экземпляра внешнего класса.
java
Использование статического вложенного класса:
java
Нестатические вложенные классы (Inner Classes):
- Не объявляются с модификатором
static.
- Имеют полный доступ ко всем членам внешнего класса, включая приватные.
- Не могут содержать статические члены (кроме констант времени компиляции).
- Требуют создания экземпляра внешнего класса для своего создания.
java
Использование нестатического вложенного класса:
java
Преимущества использования вложенных классов:
- Логическая группировка: Классы, которые используются только одним другим классом, можно логически сгруппировать внутри него.
- Инкапсуляция: Вложенные классы имеют доступ к приватным членам внешнего класса.
- Читаемость и поддерживаемость: Код становится более упорядоченным.
Типы нестатических вложенных классов:
- Локальные классы: Объявляются внутри метода.
- Анонимные классы: Классы без явного имени, обычно используются для создания экземпляра абстрактного класса, интерфейса или базового класса с переопределением методов.
Локальный класс:
java
Анонимный класс (пример с интерфейсом):
java