Зачем использовать метод set и get, если вы можете просто использовать имя object.variable для получения или установки? [Дубликат]

1

Мне просто интересно, есть ли разница между использованием метода 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;

}
}
  • 0
    Я думаю, что на это уже отвечали несколько раз. Следующий ответ является одним из примеров ответа на этот вопрос ранее.
Теги:
object
set
methods
get

3 ответа

1
Лучший ответ

Основная причина - инкапсуляция. Вы хотите, чтобы ваши переменные были частными и не изменялись непосредственно пользователем или клиентом, поскольку это может повлиять на поведение в других частях системы.

1

Это в основном передовая практика, связанная с концепцией инкапсуляции.

Если вы используете методы get и set, у вас будет больше гибкости позже, если вы решите добавить дополнительную логику к методу get или set (например, проверка).

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

0

Потому что иногда переменные являются частными и не могут быть доступны через obj.varname. Короче: инкапсуляция.

Чтобы защитить вашу программу, вы хотите, чтобы переменные были частными как можно чаще, а иногда и метод набора лучше, если вы хотите поставить чек, чтобы проверить, действительно ли оно действительное значение или что-то в этом роде.

  • 0
    Также вы можете позже захотеть добавить ограничения для переменной, которые могут быть проверены после установки числа.
  • 0
    Не является ли идея сделать переменные частными, чтобы к ним можно было обращаться только в одном классе? Если методы getter и setter могут получить доступ к этим закрытым переменным, то зачем делать их закрытыми? Благодарю.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню