Ответ
Геттеры (методы доступа, например, getField()) — это публичные методы, возвращающие значение приватного поля. Их основная цель — реализация принципа инкапсуляции.
Зачем они нужны:
- Контролируемый доступ: Позволяют скрыть внутреннее представление данных и предоставить к ним безопасный интерфейс.
- Гибкость реализации: Внутренняя логика хранения поля может измениться, но публичный контракт (геттер) останется прежним.
- Ленивая инициализация или вычисление значения: Значение может быть вычислено или загружено только в момент первого вызова геттера.
- Добавление side-эффектов: Логирование, проверка прав доступа, уведомление наблюдателей при чтении.
Пример:
public class TemperatureSensor {
private double celsius;
// Геттер может преобразовывать данные
public double getFahrenheit() {
return (celsius * 9 / 5) + 32;
}
// Геттер с ленивой инициализацией кэша
private String cachedReport;
public String getReport() {
if (cachedReport == null) {
cachedReport = generateExpensiveReport();
}
return cachedReport;
}
}
Использование геттеров вместе с сеттерами (setField()) формирует паттерн JavaBean.