1 / 1 / 1
Регистрация: 01.06.2017
Сообщений: 8
|
|||||||||||
1 | |||||||||||
Геттеры и сеттеры10.08.2017, 22:49. Показов 2489. Ответов 2
Привет, я начинающий в программировании. Просматривал онлай уроки программирования Java и был урок о геттерах и сеттерах. На сколько я понял с их помощью мы можем пользоваться и менять частные объекты другого класса. С помощью сеттера я смог изменить значение частной переменной. Но не понимаю для чего нам нужен геттер, если и без него все работает? Для чего он вообще нужен, если не трудно то доступной для простолюдина языке или примером.
0.50
|
10.08.2017, 22:49 | |
Ответы с готовыми решениями:
2
Геттеры и сеттеры Геттеры и Сеттеры в Java (Объясните чайнику) Оставлять ли геттеры-сеттеры если они не нужны Как использовать геттеры и сеттеры вместе со сканнером |
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
|
|
11.08.2017, 00:06 | 2 |
У тебя вообще может не быть поля а, оно например может вычисляться из фазы луны. Тому, кто пользуется классом этого знать не обязательно, он просто вызывает getA, не задумываясь, откуда оно берется. Для простоты можешь считать, что так принято, так работают все фреймворки, так пишут все программисты.
2
|
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
|
|
11.08.2017, 07:04 | 3 |
Сообщение было отмечено userusersilly как решение
Решение
Добавлю, это делается по нескольким причинам
1 setter() позволяет проконтролировать входные данные и послать клиента лесом если он пытается записать в класс значение за пределами диапазона. Если скажем в руководстве на класс написано что входные значения должны быть в диапазоне 1...10 а клиент решил туда записать -120 класс его вежливо отошьет выдав например исключение с сообщением. И это гораздо лучше, чем если класс молча проглотит неверное входное значение и выдаст также молча неверный результат. Ошибка в таком случае может быть очень трудно уловимой. 2. getter() как правильно сказали выше, может вообще не иметь поля под собой. В случае когда поле есть getter() и setter() играют роль прокладки. Для чего? Допустим класс принимает значения 1...10 , рассчиытвает данные и выдает обратно. Класс выпустили, все довольны, все работает. Прошло время, изменился стандарт какой нибудь, и в классе поменяли программу расчета. По новым правилам программа расчета принимает значения -.5...+5 Если тупо изменить программу расчета класса, то весь софт клиента улетит в мусор, и жить такому классу останется минут 5... Поэтому setter() принимает как и раньше от клиента 1..10 переводит их в -5...5 и записывает в поле это значение, а новая программа считает корретно и выдает клиенту результат. Обратная ситуация. Класс выпустили все пучком, все довольны. Поменялся стандарт. Клиент пишет письмо "так и так по новому стандарту я вам отдаю 1..10 вы мне должны выдавать значения не больше 1000 в любом случае". В этом случае в getter() вставляется ограничитель который режет выходные данные и отдает клиенту значения не более 1000. Очень полезная вещь на самом деле.
3
|
11.08.2017, 07:04 | |
11.08.2017, 07:04 | |
Помогаю со студенческими работами здесь
3
Сделать геттеры и сеттеры для наследников в родительском классе Геттеры и Сеттеры Геттеры и сеттеры Классы (сеттеры и геттеры) Сеттеры и геттеры в классах С++! Нужны ли геттеры и сеттеры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |