@Noortvel

Почему не public переменная, а функции get/set?

Почему стоит использовать get/set, если переменную можно использовать как угодно?
  • Вопрос задан
  • 688 просмотров
Решения вопроса 2
veydlin
@veydlin
Мне никогда не жалко средств на свое любопытство
Называется это точкой роста, вы оставляете метод чтобы в него потом можно было что-то дописать
Например, обновления какой-то конструкции после присваивания переменной числа более 10, что будете делать, если переменная будет публичной? Переписывать весь код, где она использовалась?
Ответ написан
Комментировать
GavriKos
@GavriKos
Методы позволяют не просто возвращать/присваивать значения, но и проводить какие то дополнительные манипуляции, например - проверку входных данных.
В какой то степени это так же упрощает внесение изменений в архитектуру - вот понадобится вам внезапно закрыть переменную на запись, например.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
@exenza
Сеттеры частенько делают проверки и валидации значений; в случае геттеров, они могут комбинировать значения нескольких полей. Логика меняется в одном месте, а не во многих.

Java библиотеки, например сериализация, а соответственно и фреймворки, основанные на них, используют геттеры и сеттеры
Ответ написан
Комментировать
Vestail
@Vestail
Software Engineer
Очень советую Joshua Bloch - Effective Java 2nd Edition, Item 14.
Ответ написан
Комментировать
lxsmkv
@lxsmkv
Test automation engineer
Допустим есть класс барометр, у него переменная давление, которая постоянно записывается с датчика давления. Все подсистемы которые будут обращаться к вашему классу, смогут взять и перезаписать значение переменной. Переменная-то глобальная. В самолете например, а? Я в такой самолет не сяду под дулом пистолета :)
В системах с повышеными требованиями к безопасности, да и не только, необходимо контролировать доступ к переменным. Вот вы и пишете public обертку для чтения private переменной. Функция записи в таком случае будет тоже private. Никто не должен иметь доступа к записи переменной, кроме самого класса.
Ответ написан
Комментировать
Rou1997
@Rou1997
Не всегда стоит.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы