黑马程序员技术交流社区
标题:
向大家求教了
[打印本页]
作者:
张金铎
时间:
2013-5-13 22:10
标题:
向大家求教了
本帖最后由 张金铎 于 2013-5-13 22:44 编辑
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() {
System.out.print("Z");
}
public static void main(String[] args) {
new Z();
}
}
复制代码
我觉得就输出XZ啊,为什么结果跟我想的不一样啊,求高手能给分析下么?
作者:
尹丽峰
时间:
2013-5-13 22:34
本帖最后由 尹丽峰 于 2013-5-13 22:57 编辑
package heima;
class X {//加载x类
Y b = new Y();// 2 new Y 直接去加载Y类 Y类中的构造函数Y()初始化 输出 Y
X() {
System.out.print("X");//3 加载x类的同时 构造函数初始化 so 输出X
}
}
class Y {
Y() {
System.out.print("Y");
}
}
public class Z extends X { //继承X类 就先加载X类 请看X类
Y y = new Y();//4 new y(); 构造函数 Y在此执行 输出 Y
Z() {
System.out.print("Z");
}
public static void main(String[] args) {
new Z();// 1 执行靠的是main关键字 所以从这里开始
}
}
复制代码
作者:
张金铎
时间:
2013-5-13 22:44
任江峰 发表于 2013-5-13 22:19
类的实例化过程:
1,加载.class类文件。
2,执行static静态代码块,如果有的话。
很清楚,谢谢啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2