一个java继承关系的域访问问题
最近在看think in java,颇感收益良多。
遇到里面有这么一段代码,有些不解,忘大神为小弟解惑。
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());
}
}
为什么输出的结果是
0,1
1,1,0
我原先的理解第一行应该是1,1
但我运行后发现结果却是为0,1,不知道为什么
[解决办法]
Super sup = new Sub();
很显然 你用的是父类创建的一个对象呀。
[解决办法]
Super sup = new Sub();