Soy del mundo php. ¿Podrías explicar qué son los getters y setters y darte algunos ejemplos?
Soy del mundo php. ¿Podrías explicar qué son los getters y setters y darte algunos ejemplos?
Respuestas:
Realmente no se requiere tutorial para esto. Leer sobre encapsulación
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;
}
someObj.getTime().setHour(5)
no debería afectar someObj
el estado interno. También los setters y getters (accesores y mutadores por su nombre más elegante) tienen una firma de método muy estricta, lo que significa que getter no tiene ningún parámetro. Los métodos en general solo deberían hacer una cosa de todos modos.
this
palabra clave es opcional a menos que haya un conflicto con algo que tenga un alcance más específico. En el ejemplo que dio, el definidor que se crea tendrá un solo parámetro cuyo nombre coincide con el nombre del campo, por lo tanto this.fieldName = fieldName
, se usa para distinguir que se está asignando el campo en lugar del parámetro que se asigna a sí mismo como fieldName = fieldname
se lograría. No existe tal conflicto en el captador.
En Java, los getters y setters son funciones completamente ordinarias. Lo único que los convierte en getters o setters es la convención. Un getter para foo se llama getFoo y el setter se llama setFoo. En el caso de un booleano, el getter se llama isFoo. También deben tener una declaración específica como se muestra en este ejemplo de un getter y setter para '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;
}
}
La razón para usar getters y setters en lugar de hacer públicos a sus miembros es que permite cambiar la implementación sin cambiar la interfaz. Además, muchas herramientas y conjuntos de herramientas que utilizan la reflexión para examinar objetos solo aceptan objetos que tienen captadores y definidores. Los JavaBeans, por ejemplo, deben tener getters y setters, así como algunos otros requisitos.
error: invalid method declaration; return type required
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);
}
}
Cuando ejecuta el programa, el programa se inicia en la red,
setTime()
es llamada por el objeto ctime
se establece en el valor pasado porgetTime()
es llamada por el objeto ctod
y tod
se imprimiráTambién puede leer " Por qué los métodos getter y setter son malos ":
Aunque los métodos getter / setter son comunes en Java, no están particularmente orientados a objetos (OO). De hecho, pueden dañar la capacidad de mantenimiento de su código. Además, la presencia de numerosos métodos getter y setter es una señal de alerta de que el programa no está necesariamente bien diseñado desde una perspectiva OO.
Este artículo explica por qué no debería usar getters y setters (y cuándo puede usarlos) y sugiere una metodología de diseño que lo ayudará a romper con la mentalidad de getter / setter.
Aquí hay un ejemplo de javascript de 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)
Los he usado MUCHO porque son increíbles . Lo usaría cuando me pusiera elegante con mi codificación + animación. Por ejemplo, cree un establecedor que se ocupe de un Number
que muestre ese número en su página web. Cuando se usa el establecedor, anima el número antiguo al nuevo número usando un tweener . Si el número inicial es 0 y lo establece en 10, verá que los números pasan rápidamente de 0 a 10, digamos, medio segundo. A los usuarios les encantan estas cosas y es divertido de crear.
Ejemplo de 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;
}
}
?>
citas:
Aquí hay un ejemplo para explicar la forma más sencilla de usar getter y setter en java. Se puede hacer esto de una manera más sencilla, pero getter y setter tienen algo especial que es cuando se usa un miembro privado de la clase principal en la clase secundaria en herencia. Puede hacerlo posible mediante el uso de getter y setter.
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();
}
}