Я из мира php. Не могли бы вы объяснить, какие геттеры и сеттеры есть и могут дать вам несколько примеров?
Как работают геттеры и сеттеры?
Ответ 1
Для этого не требуется учебник. Читайте на encapsulation
private String myField; //"private" means access to this is restricted
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 getters и seters являются полностью обычными функциями. Это единственное, что делает их геттерами или сеттерами. Геттер для 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);
}
}
Когда вы запускаете программу, программа запускается в сети,
- создается объект c
- Функция
setTime()
вызывается объектом c - для переменной
time
установлено значение, переданное - Функция
getTime()
вызывается объектом c - время возвращается
- Откроется
tod
иtod
распечатать
Ответ 4
Вы также можете прочитать " Почему методы getter и setter являются злыми:
Хотя методы getter/setter являются обычным явлением в Java, они не являются особенно объектно-ориентированными (OO). Фактически, они могут повредить вашу работоспособность кода. Более того, наличие многочисленных методов getter и setter является красным флагом, что программа не обязательно хорошо разработана с точки зрения OO.
В этой статье объясняется, почему вы не должны использовать геттеры и сеттеры (и когда можете их использовать) и предлагает методологию проектирования, которая поможет вам выйти из менталитета getter/setter.
Ответ 5
1. Лучшие геттеры/сеттеры умны.
Вот пример javascript из mozilla:
var o = { a:0 } // `o` is now a basic object
Object.defineProperty(o, "b", {
get: function () {
return this.a + 1;
}
});
console.log(o.b) // Runs the getter, which yields a + 1 (which is 1)
Я использовал эти LOT, потому что они awesome. Я бы использовал его, когда мне нравилось кодирование + анимация. Например, создайте сеттер, который имеет дело с Number
, который отображает этот номер на вашей веб-странице. Когда используется сеттер, он оживляет старый номер с новым номером, используя tweener. Если начальное число равно 0, и вы установите его на 10, вы увидите, что числа быстро перевернут от 0 до 10, скажем, через полсекунды. Пользователи любят этот материал, и его забавно создавать.
2. Getters/seters в php
Пример из sof
<?php
class MyClass {
private $firstField;
private $secondField;
public function __get($property) {
if (property_exists($this, $property)) {
return $this->$property;
}
}
public function __set($property, $value) {
if (property_exists($this, $property)) {
$this->$property = $value;
}
return $this;
}
}
?>
citings:
Ответ 6
пример здесь, чтобы изучить этот самый простой способ использования getter и setter в "java". можно сделать это более прямым способом, но у получателя и сеттера есть что-то особенное, что при использовании частного члена родительского класса в дочернем классе в наследовании. вы можете сделать это, используя геттер и сеттер.
package stackoverflow;
public class StackoverFlow
{
private int x;
public int getX()
{
return x;
}
public int setX(int x)
{
return this.x = x;
}
public void showX()
{
System.out.println("value of x "+x);
}
public static void main(String[] args) {
StackoverFlow sto = new StackoverFlow();
sto.setX(10);
sto.getX();
sto.showX();
}
}