Пояснення геттерів та сетерів на Java

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

Для кожної змінної екземпляра метод 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; }