Java编译执行顺序

打印出来:

怎么执行出来的啊

第1个回答  2015-11-25
1、class X 中Y先执行,输出Y
2、X的构造方法执行 ,输出X
3、Z 的实例化Y执行,输出Y
4、Z的构造方法执行 ,输出Z
成员变量先于构造方法,子类实例化时会先调用 父类的构造方法
其实,你给Y加一个 Y(String index){
System.out.println("Y "+index);
}
再改成 Y b= new Y("b");
Y y= new Y("Y")
就很容易看出来了追问

Class X怎么不是直接打印“x"呢?它才是方法体内的啊。为什么会调用Y b=new Y()这个呢

追答

实例化类时会先实例化他的成员变量,这和Z在Y后面也是一样的

第2个回答  推荐于2016-01-10
当你执行 new Z();时,
先加载父类X,
X的加载顺序,先加载初始化部分,也就是Y b = new Y();打印Y
然后执行X的构造函数,打印出X。
然后加载子类初始化部分,也就是Y y = new Y();打印Y
最后执行子类构造函数,打印出Z本回答被提问者采纳
相似回答