Class对象的初始化,需要三个准备工作:
- 加载。这是由类加载器执行的。该步骤将查找字节码(通常在classpath所指定的路径中查找,但这并非是必需的),并从这些字节码中创建一个Class对象
- 链接。在链接阶段将验证类中的字节码,为静态域分配存储空间,并且如果必需的话,将解析这个类创建的对其他对象的所有引用
- 初始化。如果该类具有超类,则对其初始化,执行静态初始化器和静态初始化块
class Parent{
public Parent(){
System.out.println("Parent constructor ...");
}
static {
System.out.println("Parent initializing ...");
}
}
class Initable extends Parent{
static int staticFinal = 47;
public Initable(){
System.out.println("Initable constructor ...");
}
static {
System.out.println("Initable initializing ...");
}
}