先总结一下静态代码块,构造代码块以及构造函数的执行顺序,很简单,一般静态代码块是在类加载的时候执行的,只执行一次,而构造代码块和构造函数都是在创建对象的时候执行的,构造构造代码块放入执行顺序要优先于构造函数,构造代码块的按先后顺序执行。
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();
}
}
最后的打印结果
我是弗雷的静态方法
我是静态代码块
我是父类的构造代码块
我是父类的构造函数
我是构造代码块
我是子类的构造函数