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

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

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

Студворк — интернет-сервис помощи студентам
Привет, я начинающий в программировании. Просматривал онлай уроки программирования 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)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.08.2017, 22:49
Ответы с готовыми решениями:

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

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

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

2
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.08.2017, 00:06
У тебя вообще может не быть поля а, оно например может вычисляться из фазы луны. Тому, кто пользуется классом этого знать не обязательно, он просто вызывает getA, не задумываясь, откуда оно берется. Для простоты можешь считать, что так принято, так работают все фреймворки, так пишут все программисты.
2
164 / 170 / 139
Регистрация: 28.11.2016
Сообщений: 301
11.08.2017, 07:04
Лучший ответ Сообщение было отмечено 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.08.2017, 07:04
Помогаю со студенческими работами здесь

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

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

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

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

Классы (сеттеры и геттеры)
У меня дан класс вектор. И 3 члена класса. И исходные данные, вектор а=а1,а2,а3 и вектор b=b1,b2,b3. Вопрос в том, как еализовать эти...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru