Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
1 / 1 / 1
Регистрация: 01.06.2017
Сообщений: 8
1

Геттеры и сеттеры

10.08.2017, 22:49. Показов 2489. Ответов 2

Author24 — интернет-сервис помощи студентам
Привет, я начинающий в программировании. Просматривал онлай уроки программирования Java и был урок о геттерах и сеттерах. На сколько я понял с их помощью мы можем пользоваться и менять частные объекты другого класса. С помощью сеттера я смог изменить значение частной переменной. Но не понимаю для чего нам нужен геттер, если и без него все работает? Для чего он вообще нужен, если не трудно то доступной для простолюдина языке или примером.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package newprogect;
public class Lock {
    
  private int A = 0;
  
  public int getA()
  {
      return A;
  }
  
  public void seta(int A)
  {
      this.A = A;
  }
   public void he()
   {
       System.out.println(A);
   }
 
 
package newprogect;
public class NewProgect {
    public static void main(String[] args) {
      Lock l = new Lock();
l.seta(8);
l.he();
       
   }
}
}
То есть я не понимаю для чего этот фрагмент, его функция и в каких случаях он применяется?
Java
1
2
3
4
 public int getA()
  {
      return A;
  }
0.50
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.08.2017, 22:49
Ответы с готовыми решениями:

Геттеры и сеттеры
Я недолго учу джаву, но уже заметил, что многие говорят, что геттеры и сеттеры это хорошо или...

Геттеры и Сеттеры в Java (Объясните чайнику)
Всем привет! Я начал изучать свой первый яп Java. Только что наткнулся на "геттер'ов" и...

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

Как использовать геттеры и сеттеры вместе со сканнером
Доброго времени суток. Не могли бы вы подсказать на конкретном примере как использовать геттеры и...

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
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2017, 07:04
Помогаю со студенческими работами здесь

Сделать геттеры и сеттеры для наследников в родительском классе
Можно ли в родительском классе сделать геттеры и сеттеры для классов наследников если у них поля...

Геттеры и Сеттеры
Сразу прошу прощение за может тупые вопросы я только начал познавать java.))Столкнулся с Геттерами...

Геттеры и сеттеры
Всем привет , решал задачу с learn.js Решил ее, но до конца не разобрался почем в...

Классы (сеттеры и геттеры)
У меня дан класс вектор. И 3 члена класса. И исходные данные, вектор а=а1,а2,а3 и вектор...

Сеттеры и геттеры в классах С++!
Сдравствуйте!Не могли бы вы мне обьяснить зачем нужны сеттеры и геттеры в классах с++ и как их...

Нужны ли геттеры и сеттеры
Переделываю программку с Qt C++ на python и там доступ к всем переменным через геттеры и сеттеры...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru