Pregunta

Posibles duplicados:
Miembros de datos públicos vs getters, setters
Propósito de los miembros privados en una clase

¿Cuál es el uso de getters y setters cuando puede hacer públicas sus variables y evitar la molestia de líneas como A.setVariableX(A.getVariableY())?

¿Fue útil?

Solución

Para ocultar los detalles de implementación. Si elige hacer que sus propiedades sean públicas en su lugar, luego decida cambiar la forma en que funcionan, debe cambiar todo el código asociado.

Con Getters y Setters, a menudo puede cambiar los detalles de implementación interna sin cambiar la API visible (y así evitar tener que cambiar cualquiera de los códigos que usa la API de la clase en cuestión).

Otros consejos

Getters y Setters pueden hacer validación e instanciación perezosa, mientras que los miembros públicos no pueden.

Por otro lado, esto no es un lenguaje agnóstico, ya que la mayoría de los idiomas que implementan propiedades abstractan la implementación para que parezcan miembros públicos en el código.

Porque a veces hay algunas restricciones sobre cuál podría ser su variable y tener que verificar que cuando configure tenga sentido.

Por ejemplo, si no se permite que su edad sea -1, lo comprobaría en su setter.

if(value >= 0)
{
   _age = value;
}
else
{
  throw new InvalidAgeException("Age may not be less than 0");
}

Los setters y los getters se aplican a las propiedades, cualesquiera que sean las "propiedades" en su código.

Por ejemplo, puedes tener un angle variable, que almacena un valor de ángulo expresado en radianes. Luego puede definir Setters y Getters para esta variable, con cualquier unidad de ángulo que crea relevante.

Es parte del principio de encapsulación. Utiliza Setters y Getters como una interfaz para interactuar con su objeto para que pueda, por ejemplo, agregar cualquier funcionalidad (como validar datos de entrada) sin tocar el código que usa la clase (ES).

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