JAVA的初始化顺序

    技术2025-08-01  7

    最近看到一个面试题,是关于java的初始化顺序的。特意记录下来:

    public class O { public O(String s) { System.out.println(s); } } public class A { private O t2 = new O("父类实例变量1"); private static O t3 = new O("父类静态变量"); public A() { O t4 = new O("父类构造函数"); } private O t5 = new O("父类实例变量2"); } public class B extends A { private O t6 = new O("子类实例变量1"); private static O t7 = new O("子类静态变量"); public B() { O t8 = new O("子类构造函数"); } private O t9 = new O("子类实例变量2"); public static void main(String[] args) { B b1 = new B(); System.out.println("====================================="); B b2 = new B(); } }

     

    一些论坛或者blog已经给出了答案。

    http://stackoverflow.com/questions/2007666/in-what-order-do-static-initializer-blocks-in-java-run http://java.chinaitlab.com/base/754921.html 看这个程序的结果就一目了然了。 父类静态变量 子类静态变量 父类实例变量1 父类实例变量2 父类构造函数 子类实例变量1 子类实例变量2 子类构造函数 ===================================== 父类实例变量1 父类实例变量2 父类构造函数 子类实例变量1 子类实例变量2 子类构造函数

     

     

     

     

    最新回复(0)