class WorkFather {
//静态代码块
static {
System.out.println("Father Static");
}
//初始化代码块
{
System.out.println("Father Initialize");
}
//构造方法
public WorkFather(){
System.out.println("Father Structure");
}
}
class WorkSon extends WorkFather {
//静态代码块
static {
System.out.println("Son Static");
}
//初始化代码块
{
System.out.println("Son Initialize");
}
//构造方法
public WorkSon(){
System.out.println("Son Structure");
}
}
public class Work02 {
public static void main(String[] args) {
WorkSon workSon = new WorkSon();
}
}
运行结果:
存在继承关系时,子类创建对象默认先调用父类构造方法。
静态代码块从属于类,类加载即执行。
so:Father Static
Son Static
代码编译时,会将初始化代码块放在构造方法中,编译后父类.class文件如下
class WorkFather {
public WorkFather() {
System.out.println("Father Initialize");
System.out.println("Father Structure");
}
static {
System.out.println("Father Static");
}
}
so:Father Initialize
Father Structure
Son Initialize
Son Structure