两个例子:
第二个例子:
也就是说当我们运行子类的构造函数的时候:
第一步先运行super();也就是说运行父类的构造函数
第二步运行完父类的构造函数中的 super();
第三步运行父类的显示初始化(就是赋值操作int num=9;)
第四步运行父类的构造代码块
第五步运行父类构造函数中的show();但是我们创建的是子类的对象,所以发现该方法被重写,所以运行子类的show()方法。但是此时子类的num还没有显示初始化,只有默认初始化为0;
第六步运行完子类的super();
第七步显示初始化
第八步构造代码块
第九步子类的show();