在下面的程序中。方法根据类型动态调用。但是动态调用变量怎么样。为什么不能这样做?
class Super {
public int field = 0;
public int getField() {
return field;
}
}
class Sub extends Super {
public int field = 1;
public int getField() {
return field;
}
public int getSuperField() {
return super.field;
}
}
public class FieldAccess {
public static void main(String[] args) {
Super sup = new Sub();
System.out.println("sup.field = " + sup.field + ", sup.getField() = " + sup.getField());
Sub sub = new Sub();
System.out.println("sub.field = " + sub.field + ", sub.getField() = " + sub.getField() + ", sub.getSuperField() = "+ sub.getSuperField());
}
}
输出:
sup.field = 0, sup.getField() = 1
sub.field = 1, sub.getField() = 1, sub.getSuperField() = 0
在这里,如果可以动态找到sup.method(),为什么不能动态获取sup.variable呢?
可能吗?如果不是为什么?
当我们有 (superclas)animal--->Dog,Cat,lion 我们调用它的方法说 makeNoise() 我们分别收到 bark 或 meow...。但是我们为什么不问它的名字并相应地得到它呢?