Utilizzando variabile pubblica può causare l'impostazione dei valori sbagliati per la variabile come il valore ingresso non può essere verificata .
es:
public class A{
public int x; // Value can be directly assigned to x without checking.
}
Uso setter può essere utilizzato per impostare la variabile con controllando l'ingresso. Mantenere l'istanza varibale privato e getter e pubblico setter è una forma di incapsulamento getter e setter è inoltre compatibile con Java Beans standard di,
getter e setter anche aiuta a attuazione polimorfismo concetto
esempio:
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;
}
esempio polimorfico: Possiamo Assig n Oggetto Refernce Variabile del sottotipo come argomento dal metodo di chiamata alla variabile di riferimento dell'oggetto del parametro Super Class del metodo chiamato.
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");
}
}
}
fonte
2012-06-17 12:56:51
possibile duplicato di [Perché utilizzare getter e setter?] (Http://stackoverflow.com/questions/1568091/why-use-getters-and-setters) e [Getter e setter implementati automaticamente rispetto ai campi pubblici] (http://stackoverflow.com/questions/111461) –