Вложенные классы (Nested Classes) — это классы, определенные внутри другого класса. Они делятся на два основных типа:
-
Статические вложенные классы (Static Nested Classes): Подобны статическим членам внешнего класса. Они не имеют доступа к нестатическим членам внешнего класса напрямую. Создаются без экземпляра внешнего класса.
Пример на Java:
java
-
Внутренние классы (Inner Classes): Нестатические. Имеют доступ ко всем членам внешнего класса, включая статические и нестатические, даже приватные. Экземпляр внутреннего класса связан с экземпляром внешнего класса. Создаются с использованием экземпляра внешнего класса.
Пример на Java:
java
Также существуют специфические виды внутренних классов:
- Локальные классы (Local Classes): Определяются внутри блока (например, метода, конструктора или блока инициализации). Доступны только в пределах этого блока.
- Анонимные классы (Anonymous Classes): Не имеют имени. Используются для создания одноразовой реализации интерфейса или расширения класса. Определяются и инстанцируются одновременно.
Преимущества вложенных классов:
- Логическое группирование: Позволяют сгруппировать классы, которые логически связаны друг с другом, повышая читаемость кода.
- Инкапсуляция: Могут иметь доступ к приватным членам внешнего класса, обеспечивая более сильную инкапсуляцию.
- Более удобный код: Упрощают написание кода для классов, используемых только одним другим классом.
Применение в QA Automation:
- Page Object Model: Внутренние или статические вложенные классы могут использоваться для организации элементов страницы (например, секций, модальных окон) внутри основного класса Page Object.
- Обработчики событий / Колбэки: Анонимные или локальные классы могут применяться для реализации тестов с использованием колбэков или обработчиков событий, например, при работе с UI элементами или слушателями.
- Конфигурационные классы: Статические вложенные классы могут содержать константы или конфигурационные параметры, специфичные для внешнего класса.