Мне просто интересно, есть ли разница между использованием метода set и get и просто использованием object.variableName для установки и получения? Благодарю.
package hello;
public class Helloworld {
int num;
public static void main(String[] args) {
Helloworld hello1 = new Helloworld();
Helloworld hello2 = new Helloworld();
hello1.num = 5;
System.out.println(hello1.num);
hello2.setNum(5);
System.out.println(hello2.getNum());
}
void setNum(int i) {
this.num = i;
}
int getNum() {
return this.num;
}
}
Основная причина - инкапсуляция. Вы хотите, чтобы ваши переменные были частными и не изменялись непосредственно пользователем или клиентом, поскольку это может повлиять на поведение в других частях системы.
Это в основном передовая практика, связанная с концепцией инкапсуляции.
Если вы используете методы get и set, у вас будет больше гибкости позже, если вы решите добавить дополнительную логику к методу get или set (например, проверка).
В случае геттера вы также запрещаете модификатору использовать класс, если он является примитивным.
Потому что иногда переменные являются частными и не могут быть доступны через obj.varname
. Короче: инкапсуляция.
Чтобы защитить вашу программу, вы хотите, чтобы переменные были частными как можно чаще, а иногда и метод набора лучше, если вы хотите поставить чек, чтобы проверить, действительно ли оно действительное значение или что-то в этом роде.