class Super{
public int field = 0;
}
class Sub extends Super{
public int field = 1;
}
public class FieldAccess {
public static void main(String[] args) {
Super sup = new Sub();
System.out.println(sup.field);
}
这段代码运行结果为什么是0?
- Super sup = new Sub();
- System.out.println(sup.field);
Super sup = new Sub();
System.out.println(sup.field);
虽然是实例化子类,但是子类可以继承/覆写父类的方法,却不能覆写父类的属性,虽然子类定义了和父类同名的属性,但是JVM认为那个属性只是子类特有的属性,所以这个地方得到0。