Debug中的一个问题
老师,在 继承的初始化顺序 这一节,
设好断点,开始debug后,先步入,到ClassLoader中,
再点Step Over后,并没有跳转到Aniaml类的
private static int st1 = 22;
public static int st2 = 23;
的位置,而是直接到了Cat类的
public static int st3=44;
的位置,同时控制台也输出"我是父类的静态代码块",
请问为什么会跳过中间父类静态属性和静态代码块啊?
导入了课程的源码也是同样问题,请老师指导一下这是什么问题。
17
收起
正在回答
1回答
同学你好,老师这里没有复现同学的情况。请同学确认是否通过正确的步骤进行的测试,建议同学除了打印语句之外,都使用Step Into进行向下执行,使用Step Over可能会跳过某些步骤。
1.在new Cat()语句位置设置debug断点;
2.运行时,在断点处使用Step Into进入对象创建;
3.此时会进入Animal类的静态代码块,输出“我是父类的静态代码块”;
4.接下来初始化Animal类的两个静态变量;
5.此时会进入Cat类,自上而下初始化静态成员,即先初始化静态变量;
6.接下里初始化Cat类的静态代码块,输出“我是子类的静态代码块”;
当完成这些之后,对象创建完成。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星