class Fu{//加载父类文件就要加载静态代码块
static{
System.out.println("静态代码块Fu");
}
{//所以要执行父类的构造方法先执行父类的构造代码块
System.out.println("构造代码块Fu");
}
public Fu(){
System.out.println("构造方法Fu");
}
}
class Zi extends Fu{//继承了父类,先加载父类再加载子类
static{
System.out.println("静态代码块Zi");//再回来加载子类的静态代码块,需要注意,静态代码块的执行是随着类的加载而加载
//只有协同关系,不存在执行关系
}
{//执行完父类的构造代码块和构造方法在返回来执行子类的构造代码块和构造方法
System.out.println("构造代码块Zi");
}
public Zi(){//调用子类的构造方法前先调用父类的构造方法
System.out.println("构造方法Zi");
}
}
public class Ceshi {
public static void main(String[] args){
Zi zi=new Zi();//创建子类对象 Zi zi就在加载父子.class new Zi()在调用构造函数
}
}