黑马程序员技术交流社区
标题:
关于继承和构造初始化的面试题求解
[打印本页]
作者:
date1130
时间:
2014-11-4 10:28
标题:
关于继承和构造初始化的面试题求解
class X {
Y b = new Y();
X() {
System.out.print("X");
}
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Z extends X {
Y y = new Y();
Z() {
//super
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}
复制代码
看程序写结果的题,分层初始化这个词语该怎么理解?做这题需要注意什么?晕头转向的。。
作者:
zxbzxb333
时间:
2014-11-4 11:50
结果是YXYZ吧,视频里这一块有讲过啊,建议你再复习一下,我看的第一遍也是没多久就忘了..就这道题而言,初始化的顺序为:子类成员变量默认初始化——父类构造函数——子类成员变量显示初始化——子类构造函数
作者:
李春江
时间:
2014-11-4 12:51
本帖最后由 李春江 于 2014-11-4 12:58 编辑
对照你自己的代码
运行结果:Y X Y Z
结果分析:
1.主函数在Z类里面,所以先
执行20-21行
的代码
2.由于Z继承了X类,所以在初始化自己的字段和构造方法之前,会先初始化父类的字段和构造方法。
即:先走
X类的字段
第2(跳转到第9-11行)行
,再
走
X类构造方法
第(3-5)行
3.最后初始化自己的字段和构造方法。
即:先走
Z类的字段
第15
(跳转到第9-11行)
行
和
Z类的构造方法
第(16-19)行
作者:
田峻菘
时间:
2014-11-4 13:16
楼上正解
作者:
lighter
时间:
2014-11-4 13:32
应该是YXYZ吧
作者:
wanmei0398
时间:
2014-11-4 18:30
李春江 发表于 2014-11-4 12:51
对照你自己的代码
运行结果:Y X Y Z
好详细,点个赞!
作者:
OnlyStyle
时间:
2014-11-4 19:25
学习了,果然还是有许多地方不知道啊。
作者:
焦旭宁1
时间:
2014-11-4 22:34
楼长正解!!!!
作者:
高昌德
时间:
2014-11-4 23:40
new 类名();都干了什么?
1:函数特有属性默认初始化。
2:函数构造代码块初始化。
3:函数构造函数初始化。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2