在此先介绍一下初始化块:初始化块是java类里的一个成员,但它没有名称,也就没有标识,因此无法通过类和对象类调用。初始化块只能在创建对象时自动执行而且在构造方法之前执行。
了解初始化块之后请看一下代码:
package base.java;
public class InitializationBlock extends Initializationfoo{
{
System.out.println("子类初始化块");
}
static
{
System.out.println("子类静态初始化块");
}
public InitializationBlock()
{
System.out.println("子类构造函数");
}
public static void main(String[] args) {
new InitializationBlock();
}
}
class Initializationfoo{
{
System.out.println("父类初始化块");
}
static{
System.out.println("父类静态初始化块");
}
public Initializationfoo()
{
System.out.println("父类构造函数");
}
}
以上代码块的运行结果是:
父类静态初始化块
子类静态初始化块
父类初始化块
父类构造函数
子类初始化块
子类构造函数
由此可见,类的加载顺序是:先加载父类的静态初始化块,然后子类的静态初始化块,然后父类的初始化块和构造函数,再加载子类初始化块和构造函数。