首页 新闻 搜索 专区 学院

java静态内部类

0
悬赏园豆:10 [已解决问题] 解决于 2017-05-06 13:27

package test;

public class test {
private String baseName = "base";

public test() {
callName();
}

public void callName() {
System.out.println(baseName);
}

static class Sub extends test {
private String baseName = "sub";

public void callName() {
System.out.println(baseName);
}

}

public static void main(String[] args) {
test bb = new Sub();
}
}

为什么输出结果为 null?

unbelievableme的主页 unbelievableme | 初学一级 | 园豆:148
提问于:2017-04-28 23:33
< >
分享
最佳答案
0

父类先初始化,并且父类构造函数调用了callName()方法,子类会覆盖这个方法,但是子类这时候还没初始化,所以只能打印默认值(null)

收获园豆:10
狼爷 | 小虾三级 |园豆:1202 | 2017-04-30 20:58

你好,如果把代码改成

package test;

public class test {
private String baseName = "base";

public test() {
callName();
}

public void callName() {
System.out.println(11);
}

static class Sub extends test {
private String baseName = "sub";

public void callName() {
System.out.println(22);
}

}

public static void main(String[] args) {
test bb = new Sub();
}
}

按照你的解释还是输出null,但是输出22,好像不是这个原因

unbelievableme | 园豆:148 (初学一级) | 2017-05-19 22:55
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册