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后面也是一样的