Вопрос-ответ

How do getters and setters work?

Как работают геттеры и установщики?

Я из мира php. Не могли бы вы объяснить, что такое геттеры и сеттеры, и привести несколько примеров?

Переведено автоматически
Ответ 1

Для этого на самом деле не требуется руководство. Прочитайте о инкапсуляции

private String myField; //"private" means access to this is restricted to the class.

public String getMyField()
{
//include validation, logic, logging or whatever you like here
return this.myField;
}
public void setMyField(String value)
{
//include more logic
this.myField = value;
}
Ответ 2

В Java геттеры и установщики - это совершенно обычные функции. Единственное, что делает их получателями или установщиками, - это соглашение. Средство получения для foo называется getFoo, а средство установки называется setFoo . В случае логического значения средство получения называется isFoo . У них также должно быть конкретное объявление, как показано в этом примере средства получения и установки для 'name':

class Dummy
{
private String name;

public Dummy() {}

public Dummy(String name) {
this.name = name;
}

public String getName() {
return this.name;
}

public void setName(String name) {
this.name = name;
}
}

Причина использования геттеров и установщиков вместо того, чтобы делать ваши элементы общедоступными, заключается в том, что это позволяет изменять реализацию без изменения интерфейса. Кроме того, многие инструменты и подборки инструментов, которые используют отражение для проверки объектов, принимают только объекты, у которых есть геттеры и установщики. Например, у JavaBeans должны быть геттеры и установщики, а также некоторые другие требования.

Ответ 3
class Clock {  
String time;

void setTime (String t) {
time = t;
}

String getTime() {
return time;
}
}


class ClockTestDrive {
public static void main (String [] args) {
Clock c = new Clock;

c.setTime("12345")
String tod = c.getTime();
System.out.println(time: " + tod);
}
}

Когда вы запускаете программу, программа запускается в сети,


  1. создан объект c

  2. функция setTime() вызывается объектом c

  3. переменной time присваивается значение, переданное

  4. функция getTime() вызывается объектом c

  5. возвращается время

  6. Он будет передан в tod и tod будет распечатан

Ответ 4

Возможно, вы также захотите прочитать "Почему методы получения и установки являются злом":


Хотя методы получения / установки являются обычным явлением в Java, они не являются особенно объектно-ориентированными (OO). Фактически, они могут повредить сопровождаемости вашего кода. Более того, наличие многочисленных методов получения и настройки является красным знаком того, что программа не обязательно хорошо спроектирована с точки зрения OO.


В этой статье объясняется, почему вам не следует использовать геттеры и сеттеры (и когда вы можете их использовать), и предлагается методология проектирования, которая поможет вам избавиться от менталитета геттера / сеттера.


2023-11-20 10:53 java