对单个类,JVM加载阶段(编译阶段):
1、给静态变量分配内存空间
2、用默认值初始化静态变量
3、按照静态变量和静态块的申明顺序执行初始化
4、如果创建对象;否则,直接结束
5、先给所有实例成员分配内存空间并用默认值初始化
6、按顺序执行实例块和变量
7、执行构造方法
如果是一个多类的应用程序,静态部部分只有在编译阶段生成类唯一的Class对象时加载一次。
并且,如果要创建子类对象,总是默认调用父类的无参构造器(除非显示调用父类构造器)。
因为如果父类的一些成员没有加载,直接加载子类根本不符合"父生子"的规律,并且实际上也
会引起混乱(如父类protected变量没有初始化,却在先加载子类是使用到了,到哪里去找呢?
内存中都还没有加载到?)