下面代码执行的结果是:
public class Z extends X { Y y = new Y(); { System.out.println("ZZ"); } Z() { System.out.println("Z"); } public static void main(String[] args) { new Z(); } } class X { { System.out.println("XX"); } Y y2 = new Y(); X() { System.out.println("X"); } } class Y { { System.out.println("YY"); } Y() { System.out.println("Y"); } }
结果:
XX YY Y X YY Y ZZ Z
解析: 类加载的时候只会初始化静态的变量,静态的代码块, 而普通的变量,代码块要到new的时候才会被初始化.
子类构造方法执行之前会先调用它的父类.
还没有评论,来说两句吧...