Usando variable pública puede provocar el establecimiento de valores incorrectos para la variable como el valor de entrada no se puede comprobar .
por ejemplo:
public class A{
public int x; // Value can be directly assigned to x without checking.
}
Usando setter se puede utilizar para establecer la variable con el control de la entrada de. Mantener la instancia varibale privado y getter y pública colocador es una forma de encapsulación getter y setter también es compatible con Java Beans estándar,
getter y setter también ayuda en implementar polimorfismo concepto
por ejemplo:
public class A{
private int x; //
public void setX(int x){
if (x>0){ // Checking of Value
this.x = x;
}
else{
System.out.println("Input invalid");
}
}
public int getX(){
return this.x;
}
ejemplo polimórfica: podemos ASSIG n Variable de referencia de objeto del subtipo como argumento desde el método de llamada a la variable de referencia de objeto del parámetro de superclase del método llamado.
public class Animal{
public void setSound(Animal a) {
if (a instanceof Dog) { // Checking animal type
System.out.println("Bark");
}
else if (a instanceof Cat) { // Checking animal type
System.out.println("Meowww");
}
}
}
posible duplicado de [¿Por qué usar getters y setters?] (Http://stackoverflow.com/questions/1568091/why-use-getters-and-setters) y [getters y setters auto-implementados vs. campos públicos] (http://stackoverflow.com/questions/111461) –