Вложенные классы - это классы, объявленные внутри другого класса. Они позволяют логически группировать классы, которые используются только в одном месте, повышают инкапсуляцию и делают код более читаемым.
Вложенные классы бывают:
- Статические (Static Nested Classes): Не имеют доступа к нестатическим членам внешнего класса. Могут создаваться без экземпляра внешнего класса.
- Нестатические (Inner Classes): Имеют доступ ко всем членам внешнего класса (включая приватные). Для создания экземпляра нестатического вложенного класса требуется экземпляр внешнего класса.
Применение:
- Скрытие реализации: Вложенный класс может использоваться как вспомогательный класс, детали реализации которого не должны быть доступны извне.
- Группировка: Логическое объединение тесно связанных классов.
- Реализация колбэков / слушателей: Часто используется для создания анонимных внутренних классов для реализации интерфейсов или абстрактных классов.
- Итераторы: Внутренний класс удобен для реализации итератора, так как имеет доступ к внутреннему состоянию коллекции.
Пример (Java):
java
java