Рассмотрим доступ к переменным объектов с помощью геттеров и сеттеров. Примером плохого написания кода считается, использование для переменных класса модифткатора доступа public. Это нарушает принцип инкапсуляции. Поэтому для защиты был придуман механизм доступа к переменным через get и set (геттер и сеттер) методы, которые обычнно называют свойства.
Get позволяет получить значения (читать значения), а Set - записать значения в переменную. В коде они не отличаются от обычных методов. Но имя метода всегда начинается с префикса get или set.
Объявим все переменные с модификатором доступа private. Теперь все переменные доступны только внутри класса.
Class MyClass {
private String name = "Vadim";
private int age = 33;
}
Теперь организуем доступ через геттеры и сеттеры. Для них мы используем модификатор доступа public, затем идет тип переменной (для каждой свой, такой же, как и у переменных, которые мы закрыли), затем имя метода (префикс get/set и само имя переменной). В фигурных скобках пишем return имя_переменной; для возврата значения переменной (чтения).
Class MyClass {
private String name = "Vadim";
private int age = 33;
public String getName() {
return name;
}
public int getAge(){
return age;
}
}
Теперь у нас есть доступ к чтению переменных. Давайте настроим доступ к их записи через set.
Class MyClass {
private String name = "Vadim";
private int age = 33;
public String getName() {
return name;
}
public int getAge(){
return age;
}
public void setName(String newName) {
name = newName;
}
public void setAge(int newAge) {
age = newAge;
}
}
Вопрос 1
Как вам кажется, в чём преимущество при использовании свойств?
Вопрос 2
Можем ли мы в сеттер не передавть параметров?