Unique

Java程序初始化的顺序

  最近在看java相关知识,毕竟之前主攻不是Java。
  Java的执行顺序如下:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数。
  我自己测试写的范例如下:

class Father {
    static {
        System.out.println("Father static block");
    }
    {
        System.out.println("Father block");
    }
    public Father() {
        System.out.println("Father constructor");
    }
}

public class Son extends Father {
    static {
        System.out.println("Son static block");
    }
    {
        System.out.println("Son block");
    }
    public Son() {
        System.out.println("Son constructor");
    }
    public static void main(String args[]) {
        new Son();
    }
}

结果如下:
Father static block
Son static block
Father block
Father constructor
Son block
Son constructor


转载需经作者允许并注明出处(http://blog.hiunique.com/java/114.html)
来自:Unique

添加评论