Геттери та сеттери використовуються для захисту ваших даних, особливо при створенні класів.
Для кожної змінної екземпляра метод getter повертає своє значення, тоді як метод setter встановлює або оновлює своє значення. Враховуючи це, геттери та сетери також відомі як аксесуари та мутатори відповідно.
За домовленістю, геттери починаються зі слова "get", а сеттери - зі слова "set", за яким слід ім'я змінної. В обох випадках перша буква імені змінної пишеться з великої літери:
public class Vehicle { private String color; // Getter public String getColor() { return color; } // Setter public void setColor(String c) { this.color = c; } }
Метод геттера повертає значення атрибута. Метод сеттера бере параметр і призначає його атрибуту.
Після визначення геттера та сеттера ми використовуємо їх в основному:
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; }