題目描述
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
提交
取消
