Java程序的初始执行化顺序:
父类静态变量----->父类静态代码块----->子类静态变量---->子类静态代码块--->父类非静态变量--->父类非静态代码块---->父类构造方法---->子类非静态变量--->子类非静态代码块--->子类构造方法
静态代码块:随类的加载而执行,且只执行一次;
public class demo2 {
public static void main(String []args){
new Zi();
}
}
class Fu{
Fu(){
System.out.println("class fu");
}
//fu构造代码块
{
System.out.println("gouzao fu");
}
static {
System.out.println("static class fu");
}
}
class Zi extends Fu{
Zi(){
//super();
System.out.println("class zi");
}
//zi的构造代码块
{
System.out.println("gouzao zi");
}
static {
System.out.println("static class zi");
}
}
执行结果: