总执行顺序/流程分析
- 启动程序
- 开启父类加载
- 父类静态 属性/代码块
- 开启子类加载
- 子类静态 属性/代码块
- 子类main方法(此处把main方法写在了子类里面,才有该步)
- 进入子类构造
- 由子类构造直接进入父类构造(因为父类构造写在子类构造的第一行)
- 父类构造代码块
- 父类构造方法(中的局部代码块)
- 子类构造代码块
- 子类构造方法(中的局部代码块)
代码演示
class Parent {
public static String p_StaticField = "父类-静态变量";
public String p_Field = "父类-变量";
protected int i = 1;
protected int j = 2;
static {
System.out.println( p_StaticField ); // 1.
System.out.