总结:
- 首先执行main类中创建一个对象名为p对象.
- p对象的类名为People ,构造方法为Student
- 跳转到Student
- 因为Student继承类People关键字为extends
- 跳转到People类中
- 先执行静态Static方法,然后执行非静态方法,遇到new执行new下非静态方法,非静态初始化块从上到下执行
- People类中执行代码顺序4,遇到new执行非静态6,执行18,因为是n++先引用才自加,执行初始化块8
- 按顺序执行费静态初始化块34,然后执行People无参构造函数22,执行完毕后跳转到4执行接下来的Static静态语句
- 初始化n=10 ,跳转到静态初始化块13,至此People静态语句全部执行完毕,跳转到Student
- Student类中的静态初始化块12,至此Student和超类(父类)People中静态语句Static全部读取完毕,
- 执行Student(),因为Student类中没有,追溯到People类中Student()
- 执行People类中的默认构造块,然后执行People()构造函数,执行People类中完毕后
- 跳转到Student中执行构造函数块
第二个语句
- 执行上5.执行Student()有参类,因为Student类中super,追溯到People类中
- 执行构造块,执行People类中Student()有参;跳转Student类中执行构造块,执行有惨