¿Cómo funcionan los captadores y definidores?

Resuelto ajsie asked hace 14 años • 6 respuestas

Soy del mundo php. ¿Podrías explicar qué son los captadores y definidores y darte algunos ejemplos?

ajsie avatar Jan 10 '10 19:01 ajsie
Aceptado

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;
}
Paul Creasey avatar Jan 10 '2010 12:01 Paul Creasey

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.

Mark Byers avatar Jan 10 '2010 12:01 Mark Byers
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,

  1. se crea el objeto c
  2. la función setTime()es llamada por el objeto c
  3. la variable timese establece en el valor pasado por
  4. la función getTime()es llamada por el objeto c
  5. el tiempo ha regresado
  6. Pasará tody todse imprimirá.
user3137648 avatar Jan 25 '2014 04:01 user3137648