请描述Java类加载过程中初始化的执行顺序,并解释下面的输出结果:存在父子类继承关系grandpa、father、son,每个类都有静态代码块、构造代码块和构造函数,输出不同信息;father类中定义静态变量factor,最后通过son.factor访问该变量。请说明最终输出了哪些信息及顺序。
考察说明
考察类初始化顺序、静态变量访问触发加载的机制
回答思路
- 识别访问静态变量不触发子类初始化但触发父类初始化
- 按父类到子类的顺序执行静态初始化
- 构造实例时先父后子的实例初始化顺序
- 解释静态代码块与构造代码块、构造函数的执行时机