题目描述
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 ????
1 回答
胡子哥哥
TA贡献1825条经验 获得超6个赞
public class Base {
private String baseName = "base";//1
public Base() {
callName();//2
}
public void callName() {
System.out.println(baseName);
}
static class Sub extends Base {
private String baseName = "sub";
public void callName() {
System.out.println(baseName);//3
}
}
public static void main(String[] args) {
Base b = new Sub();
}
}
Base b = new Sub();先初始化父类,顺序如上面的1,2,3,进入callName方法时子类的属性还没有初始化执行代码,所以打印的是null.
添加回答
举报
0/150
提交
取消