要了解java程序初始化过程,我们首先来看一段程序吧:
public class ClassInit {
static {
System.out.println("父类静态代码块");
}
{
System.out.println("父类非静态代码块");
}
public ClassInit() {
System.out.println("父类构造方法");
}
}
public class Base extends ClassInit{
static {
System.out.println("子类静态代码块");
}
{
System.out.println("子类非静态代码块");
}
public Base() {
System.out.println("子类构造方法");
}
public static void main(String[] args) {
new Base();
}
}
程序的运行结果为:
父类静态代码块
子类静态代码块
父类非静态代码块
父类构造方法
子类非静态代码块
子类构造方法
看到这里,我不用多讲啦,大家可以自行总结出以下的原则:
- 静态对象(变量)优先于非静态的;
- 父类优先于子类;
- 按照成员变量定义的顺序来进行初始化操作.