黑马程序员技术交流社区
标题:
还是加载顺序的问题
[打印本页]
作者:
飞天小猪猪
时间:
2013-4-3 16:27
标题:
还是加载顺序的问题
本帖最后由 HM朱俊 于 2013-4-4 13:01 编辑
class X
{
Y b1 = new Y(1);
X()
{
System.out.print("2");
}
}
class Y
{
Y(int y)
{
System.out.print(y);
}
}
public class Z extends X
{
Y y = new Y(3);
Z()
{
super();
System.out.print("4");
}
public static void main(String[] args)
{
new Z();
}
}
复制代码
输出结果是1234 说明程序运行的时候是这样的 先读Z中的main方法,创建Z对象的时候先走Z的构造函数初始化,Z是X的子类,所以Z的构造函数中有句隐式的super()语句,这时就要先走X的构造函数 而在X函数中,构造函数前有个成员变量是Y类的对象,从答案开来是先存入了Y的对象,然后才是X的构造函数初始化。然后又是Z类中的成员Y的对象走在Z的构造函数之前,还是很疑惑。
之前也有人问过这个问题,地址是
http://bbs.itheima.com/thread-39545-1-1.html
,答案是YXYZ,看下面的解答都说是先加载了Z中的Y对象然后才是X中的X和Y。其中两个Y不清楚是哪个类的,所以我改为了数字,来判断执行的顺序。 求指点
作者:
谢达
时间:
2013-4-3 20:07
lz去看下这篇文章吧。相信会对你有帮助
http://www.cnblogs.com/lmtoo/archive/2012/04/08/2437918.html
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2