类继承中构造方法与static块调用顺序浅析【转】
1) 类中Static{}代码段会在该类第一次访问里被调用,并且仅被调用一次
2) 由于类中构造方法会默认地或显示的调用父类的构造方法,这样类在实例化时(即调用构造器方法),会优先调用构造器方法。
如下程序:
class Firework{ static { System.out.println("Hello" ); } public Firework () { System.out.println("Firework 0" ); }}class Fountain extends Firework { static { System.out.println("World" ); } public Fountain() { // TODO Auto-generated constructor stub System.out.println("Fountain 0" ); }}
现有一段代码如下:
Firework f = new Fountain();
运行输出为
Hello
World
Firework 0
Fountain 0
由输出可知Java对类中static块执行策略是:优先深度遍历所有类的static{}块,其次再遍历类的构造器
?