Объяснение методов получения и установки в Java

Геттеры и сеттеры используются для защиты ваших данных, особенно при создании классов.

Для каждой переменной экземпляра метод получения возвращает ее значение, в то время как метод установки устанавливает или обновляет ее значение. Учитывая это, геттеры и сеттеры также называются аксессорами и мутаторами соответственно.

По соглашению, геттеры начинаются со слова «get», а сеттеры - со слова «set», за которым следует имя переменной. В обоих случаях первая буква имени переменной пишется с заглавной буквы:

public class Vehicle { private String color; // Getter public String getColor() { return color; } // Setter public void setColor(String c) { this.color = c; } }

Метод получения возвращает значение атрибута. Метод установки принимает параметр и присваивает его атрибуту.

После того, как геттер и сеттер определены, мы используем их в нашем main:

public static void main(String[] args) { Vehicle v1 = new Vehicle(); v1.setColor("Red"); System.out.println(v1.getColor()); } // Outputs "Red"

Геттеры и сеттеры позволяют контролировать значения. Вы можете проверить данное значение в установщике перед фактической установкой значения.

Зачем использовать геттеры и сеттеры?

Геттеры и сеттеры позволяют контролировать доступ к важным переменным и их обновление в вашем коде. Например, рассмотрим этот метод установки:

public void setNumber(int number) { if (number  10) { throw new IllegalArgumentException(); } this.number = num; }

Используя этот setNumberметод, вы можете быть уверены, что значение numberвсегда находится в диапазоне от 1 до 10. Это намного лучше, чем обновление numberпеременной напрямую:

obj.number = 13;

Если вы обновляете numberнапрямую, возможно, вы вызовете непредвиденные побочные эффекты где-то еще в вашем коде. Здесь установка numberна 13 нарушает ограничение от 1 до 10, которое мы хотим установить.

Создание numberчастной переменной и использование setNumberметода предотвратят это.

С другой стороны, единственный способ прочитать значение number- использовать метод получения:

public int getNumber() { return this.number; }