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);
虽然是实例化子类,但是子类可以继承/覆写父类的方法,却不能覆写父类的属性,虽然子类定义了和父类同名的属性,但是JVM认为那个属性只是子类特有的属性,所以这个地方得到0。