Какие модификаторы доступа для метода ты знаешь?

«Какие модификаторы доступа для метода ты знаешь?» — вопрос из категории ООП, который задают на 28% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В контексте объектно-ориентированного программирования, которое важно для написания качественного тестового кода (например, в Java для Selenium или в Python для Pytest), я использую четыре основных модификатора доступа для методов:

  1. public – метод доступен из любого другого класса. Я использую его для ключевых методов тестового фреймворка или утилит, которые должны быть доступны всем тестам.
  2. protected – метод доступен внутри своего пакета (папки) и для классов-наследников. Это полезно для создания базовых тестовых классов, от которых наследуются другие.
  3. default (package-private) – метод доступен только внутри своего пакета (если модификатор не указан явно). Я применяю это для скрытия вспомогательных методов, не предназначенных для использования извне пакета с тестами.
  4. private – метод доступен только внутри своего класса. Я использую приватные методы для инкапсуляции внутренней логики, например, для сложных проверок или подготовки данных внутри Page Object.

Пример из тестового фреймворка на Java:

public class TestBase {
    // Доступен везде, например, для инициализации драйвера
    public WebDriver initDriver() { ... }

    // Доступен в пакете и наследниках, например, для настройки окружения
    protected void setupEnvironment() { ... }

    // Доступен только в этом пакете, например, внутренний хелпер
    void generateTestData() { ... }

    // Доступен только здесь, например, для парсинга конфига
    private Config parseConfig() { ... }
}

Правильное использование модификаторов делает тестовый код более структурированным, защищенным от непреднамеренного использования и облегчает его поддержку.