类加载顺序
①类加载从上往下执行,依次执行静态的初始化语句和初始化块,而且类加载优先于对象创建。(静态初始化语句和初始化块只加载一次)
②创建本类的对象时,从上往下执行一次非静态的初始化语句和初始化块,然后执行构造函数。
③创建另一个类对象时;先加载另一个类的静态语句和静态初始化块(同样也是第一次才会加载他的静态语句和初始化块,仅执行一次)。然后在加载其它类的非静态的初始化语句和初始化块,然后执行构造器函数。
④静态此语句初始化时可以创建类对象
⑤静态方法可以只加载不调用
class HelloA {
public HelloA() {
System.out.println("HelloA");
}
{System.out.println("I'm A class");}
static {System.out.println("static A");}
}
public class HelloB extends HelloA{
public HelloB() {
System.out.println("HelloB");
}
{System.out.println("I'm B class");}
static {System.out.println("static B");}
public static void main(String[] args) {
new HelloB();
}
}
其结果如下: