1.静态对象(只初始化一次)先于非静态对象(可以初始化多次)初始化
2.父类先于子类初始化
3.按照成员变量顺序进行初始化
顺序为:父类静态变量→父类静态代码块→子类静态变量→子类静态代码块→父类非静态变量→父类非静态代码块→父类构造方法→子类非静态变量→子类非静态代码块→子类构造方法
class Base{
static
{
System.out.println("Base static block");
}
{
System.out.println("Base block");
}
public Base()
{
System.out.println("Base constructor");
}
}
public class Derived extends Base
{
static
{
System.out.println("Derived static block");
}
{
System.out.println("Derived block");
}
public Derived()
{
System.out.println("Derived constructor");
}
public static void main(String[] args)
{
new Derived();
}
}
程序运行结果为:
Base static block
Derived static block
Base block
Base constructor
Derived block
Derived constructor