黑马程序员技术交流社区
标题:
结果,,,好像不太对。
[打印本页]
作者:
houzhiming
时间:
2016-7-29 10:31
标题:
结果,,,好像不太对。
public class Dervied extends Base {
private String name = "dervied";
public Dervied() {
tellName();
printName();
}
public void tellName() {
System.out.println("Dervied tell name: " + name);
}
public void printName() {
System.out.println("Dervied print name: " + name);
}
public static void main(String[] args){
new Dervied();
}
}
class Base {
private String name = "base";
public Base() {
tellName();
printName();
}
public void tellName() {
System.out.println("Base tell name: " + name);
}
public void printName() {
System.out.println("Base print name: " + name);
}
}
输出结果:
Dervied tell name: null
Dervied print name: null
Dervied tell name: dervied
Dervied print name: dervied
作者:
lbx95272006
时间:
2016-7-29 10:56
这里讲的是继承关系如何分层初始化的问题
子类要 new 对象,会先访问父类的构造方法,而父类中的成员变量是私有的,子类访问不到,默认初始化成员变量值是null, 所以结果是两个null
再接着走子类构造,在这之前,会先对成员变量初始化, name = "dervied";
然后访问构造,所以后两个结果是 dervied
作者:
lbx95272006
时间:
2016-7-29 11:25
前面两个null 我也解释错了,你看其他人的答案吧,我也来学习下
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2