Java程序初始化工作可以在许多不同的代码块中来完成(例如静态代码块、构造函数等),它们执行的顺序如下:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数。
下面Gd和大家一起看一个简单的程序:
class Fu{ static{ System.out.println("Fu static block"); } { System.out.println("Fu block"); } public Fu(){ System.out.println("Fu constructor"); } } public class Zi extends Fu{ static{ System.out.println("Zi static block"); } { System.out.println("Zi block"); } public Zi(){ System.out.println("Zi constructor"); } public static void main(String[] args){ new Zi(); } }看了这个程序的输出结果,就会一目了然了:
Fu static blockZi static blockFu blockFu constructorZi block
Zi constructor
对比上面的规则,就会很容易记住这些规律了。
