黑马程序员技术交流社区
标题:
一个关于构造函数的问题?
[打印本页]
作者:
苏乞儿
时间:
2014-9-14 02:02
标题:
一个关于构造函数的问题?
<p>class X{
Y b=new Y();
X(){
System.out.println("X");
}
}
class Y{
Y(){
System.out.println("Y");
}
}
class Z extends X{
Y y=new Y();
Z(){
super();
System.out.println("Z");
}
public static void main(String[] args){
new Z();
}
}</p><p>建立Z的对象,到Z的构造函数去初始化,执行super语句输出一个X,然后再执行super语句下一句输出一个Z不是吗?为什么输出的不是XZ?程序的运行是按照什么顺序进行的呢,还请大牛不吝赐教啊。。。
</p>
复制代码
作者:
逍遥呆
时间:
2014-9-14 02:31
我是这样理解的。
从主函数开始,创建了z的匿名对象,然后到z()里读,z先继承了x,到父类x()里先初始化,类x创建y对象,打印一个y,然后继续执行打印一个x,回到z函数中,先是建立了一个y的对象打印一个y。然后回到z继续执行。打印一个z。
作者:
cs8630323
时间:
2014-9-14 06:04
父类--静态变量
父类--静态初始化块
子类--静态变量
子类--静态初始化块
父类--变量
父类--初始化块
父类--构造器
子类--变量
子类--初始化块
子类--构造器
这是类加载顺序,记住了。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2