Java基础----你真的了解java类创建顺序吗?

public class HelloParent {
helloY y = new helloY();
static {
System.out.println(“parent static block”);
}
HelloParent() {
System.out.println(“parent construct”);
}
}

class HelloChild extends HelloParent {
helloY y = new helloY ();
static {
System.out.println(“child static block”);
}
HelloChild() {
System.out.println(“child construct”);
}

public static void main(String[] args) {
    new HelloChild();
}

}

class helloY {
helloY () {
System.out.println(“this is Y”);
}
}
如上图所示,各位看官猜猜输出顺序是怎么样的?这里只能做一个总结:
输出顺序:先父类的静态代码块—>子类的静态代码块—>父类的成员变量初始化—>
父类的构造方法—->子类的成员变量初始化—>子类的构造方法。经过机试也是没有问题的。结果如下:
parent static block
child static block
this is Y
parent construct
this is Y
child construct

你可能感兴趣的:(java)