父类:FatherStaticDemo
public class FatherStaticDemo {
{
System.out.println("father普通代码块");
}
static {
System.out.println("father静态代码块");
}
public FatherStaticDemo() {
System.out.println("父类构造");
}
}
子类:SonStaticDemo
public class SonStaticDemo extends FatherStaticDemo{
{
System.out.println("son普通代码块");
}
static{
System.out.println("son静态代码块");
}
public SonStaticDemo(){
System.out.println("子类构造");
}
}
public class Test {
{
System.out.println("测试类的普通代码块");
}
static{
System.out.println("测试类的静态代码块");
}
public static void main(String[] args) {
SonStaticDemo s = new SonStaticDemo();
}
}
执行结果:
总结:
静态代码块,在加载类的时候就执行,并且在非静态代码块之前执行
非静态代码块,在创建类对象时候执行,不创建对象时不执行(如:测试类的非静态代码块未执行)
构造函数最后执行