Pregunta

Soy del mundo php. Podría explicar lo que son captadores y definidores y que podría dar algunos ejemplos?

¿Fue útil?

Solución

Tutorial no es realmente necesario para esto. Lea 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;
}

Otros consejos

En los captadores y definidores de Java son funciones completamente normales. Lo único que les hace getters o setters es convención. Un captador de foo se llama getFoo y el colocador se llama setFoo. En el caso de un valor 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 el '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 de usar captadores y definidores en vez de hacer los miembros de su público es que hace posible el cambio de la puesta en práctica sin cambiar la interfaz. Además, muchas herramientas y juegos de herramientas que utilizan la reflexión para examinar objetos sólo aceptan objetos que tienen captadores y definidores. JavaBeans por ejemplo debe 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 se ejecuta el programa, el programa se inicia en la red,

  1. objeto c se crea
  2. setTime() función es llamada por el objeto c
  3. el time variable se establece en el valor pasado por
  4. getTime() función es llamada por objeto c
  5. el tiempo se devuelve
  6. Se passe a tod y tod obtener imprime

También puede leer " ¿Por qué los métodos getter y setter son malos ":

  

Aunque los métodos de captador / definidor son comunes en Java, no están particularmente orientada a objetos (OO). De hecho, pueden dañar la mantenibilidad del código. Por otra parte, la presencia de numerosos métodos getter y setter es una bandera roja que el programa no es necesariamente bien diseñado desde una perspectiva OO.

     

En este artículo se explica por qué no se debe utilizar captadores y definidores (y cuando se puede usar ellos) y sugiere una metodología de diseño que le ayudará a salir del captador / mentalidad colocador.

1. Los mejores getters / setters son inteligentes.

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)

He utilizado estos mucho porque son impresionante . Lo usaría al conseguir fantasía con mi codificación + animación. Por ejemplo, hacer una incubadora que se ocupa de una Number que muestra que el número que aparece en su página web. Cuando se utiliza el colocador que anima el número antiguo al nuevo número mediante un tweener . Si el número inicial es 0 y se configura a 10, entonces se podría ver los números de voltear rápidamente de 0 a 10 sobre, digamos, medio segundo. Los usuarios encanta este producto y es divertido para crear.

2. Getters / setters en php

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;
  }
}
?>

citings:

Este es un ejemplo para explicar la manera más sencilla de utilizar get y set en Java. Uno puede hacer esto de una manera más sencilla, pero getter y setter tener algo especial que es cuando se usa miembro privado de la clase padre en la clase de niño en herencia. Puede que sea posible mediante el uso de get y set.

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();
        }

    }
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top