先总结一下静态代码块,构造代码块以及构造函数的执行顺序,很简单,一般静态代码块是在类加载的时候执行的,只执行一次,而构造代码块和构造函数都是在创建对象的时候执行的,构造构造代码块放入执行顺序要优先于构造函数,构造代码块的按先后顺序执行。

package org.sunyard.wu;

public class Foo {
static{
System.out.println("我是弗雷的静态方法");
}
{
System.out.println("我是父类的构造代码块");
}
public Foo(){
System.out.println("我是父类的构造函数");
}

}

 

package org.sunyard.wu;

public class Children extends Foo{
public Children(){
System.out.println("我是子类的构造函数");
}
static{
System.out.println("我是静态代码块");
}
{
System.out.println("我是构造代码块");
}
}

 

package org.sunyard.wu;

public class Test {
public static void main(String[] args){
Children children=new Children();
}

}

最后的打印结果

我是弗雷的静态方法
我是静态代码块
我是父类的构造代码块
我是父类的构造函数
我是构造代码块
我是子类的构造函数