public class a { static { System.out.println("a静态"); } public a(){ System.out.println("a构造"); } { System.out.println("a初始化"); } }
public class b extends a { static { System.out.println("b静态"); } public b(){ System.out.println("b构造"); } { System.out.println("b初始化"); } public static void main(String[] args){ b b1 = new b(); System.out.println("分割线"); b b2 = new b(); } }
结果:
a静态
b静态
a初始化
a构造
b初始化
b构造
分割线
a初始化
a构造
b初始化
b构造
总结:
初始化时:先父类静态后子类静态,先父类初始化、构造函数后子类初始化构造函数
初始后:静态方法不再执行,先父类初始化、构造函数后子类初始化构造函数