Этот вопрос относится к одному из основных принципов проектирования ОО: инкапсуляция!
Средства доступа (также известные как методы получения и установки) - это методы, которые позволяют вам читать и записывать значение переменной экземпляра объекта
public class AccessorExample {
private String attribute;
public String getAttribute() {
return attribute;
}
public void setAttribute(String attribute) {
this.attribute = attribute;
}
}
Зачем их использовать?
Getter и Setters делают API более стабильными. Рассмотрим поле public в классе, к которому обращаются другие классы. Позже вы захотите добавить дополнительную логику при получении и установке переменной. Это повлияет на существующего клиента, который использует API. Таким образом, любые изменения в этом общедоступном поле потребуют изменений для каждого класса, который ссылается на него. Напротив, с помощью методов доступа можно легко добавить некоторую логику, например, кешировать некоторые данные, а потом их лениво инициализировать. Кроме того, можно запустить событие изменения свойства, если новое значение отличается от предыдущего значения. Все это будет беспрепятственно для класса, который получает значение с помощью метода доступа.
Также методы получения и установки позволяют использовать разные уровни доступа, например. Get может быть общедоступным, но Набор может быть защищен.