题目描述
public class Base {
private String baseName = "base";
public Base() {
callName();
}
public void callName() {
System.out.println(baseName);
}
static class Sub extends Base {
private String baseName = "sub";
public void callName() {
System.out.println(baseName);
}
}
public static void main(String[] args) {
Base b = new Sub();
}
}
你期待的结果是什么?实际看到的错误信息又是什么?
为什么会输出: null ????
Base b = new Sub();先初始化父类,顺序如上面的1,2,3,进入callName方法时子类的属性还没有初始化执行代码,所以打印的是null.