¿Cómo funcionan los captadores y definidores?
Soy del mundo php. ¿Podrías explicar qué son los captadores y definidores y darte algunos ejemplos?
Realmente no se requiere tutorial para esto. Lea sobre la encapsulación
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;
}
En Java, los captadores y definidores son funciones completamente comunes. Lo único que los convierte en captadores o definidores es la convención. Un captador de foo se llama getFoo y el definidor se llama setFoo. En el caso de un booleano, el captador se llama isFoo. También deben tener una declaración específica como se muestra en este ejemplo de captador y definidor para 'nombre':
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 utilizar captadores y definidores en lugar de hacer que sus miembros sean públicos 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 captadores y definidores, así como algunos otros requisitos.
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 comienza en la red eléctrica,
- se crea el objeto c
- la función
setTime()
es llamada por el objeto c - la variable
time
se establece en el valor pasado por - la función
getTime()
es llamada por el objeto c - el tiempo ha regresado
- Pasará
tod
ytod
se imprimirá.