使用公共变量可能会导致为变量设置错误的值,因为无法检查输入值。
例如:
public class A{
public int x; // Value can be directly assigned to x without checking.
}
使用 setter 可用于通过检查输入来设置变量。保持实例 varibale 私有,getter 和 setter public 是 Encapsulation getter 的一种形式,setter 也与 Java Beans 标准兼容,
getter 和 setter 也有助于实现多态性概念
例如:
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;
}
多态示例:我们可以将 Sub 类型的对象引用变量作为调用方法的参数分配给被调用方法的超类参数的对象引用变量。
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");
}
}
}