程序显示 0 9,但应显示 6 9。找到(一个!)错误并纠正。
使用调试程序。设置 ,breakpoints (Ctrl+F8),然后转到 Run -> Debug。
F9 将执行代码,直至碰到下一个断点
F8 将跳到代码的下一行。
调试、调试和再调试
- 8
已锁定
评论 (8)
- 受欢迎
- 新
- 旧
你必须先登录才能发表评论
Sheehan
30 十月 2020, 02:38
在B的构造方法中this.f1 += f1;执行之前,这个对象中的protected int f1还没有被赋值为3,初始值仍然是0,在执行到A构造方法中的initialize()时,因为这个对象是B对象,所以执行的是B类中的initialize(),使用的是B中仍然是0的f1。
+1
元.
14 二月, 17:23
原來如此,話說那個斷點還是不太會用😂
0
z18335776829
25 五月, 20:27
? 在构造方法执行前 实例变量会先初始化 也就是说 在B的构造方法中this.f1 += f1;执行之前,这个对象中的protected int f1已经初始化为3了
0
有梦想的咸鱼
26 五月, 10:31
我觉得后半段说的不对,如果这个对象为B对象,那么A中将init方法改为private后,B对象更不可能调用A的私有方法,这里super应该传递的是B对象的A引用,即子类对象的父类引用,然后因为B类中重写了A的init方法,所以A引用此时调用的B中的init方法,如果改成private,因为私有方法不能被继承和重写,所以B中的同名init方法为B独有的方法,此时A引用会优先调用自己的init方法.
0
rongxxxq
2 七月 2020, 12:20
如果这段代码不做修改,new B(6)一直调用的是B.initialize ?
而将A.initialize 修改为private后,就能调用到A.initialize ,这是为什么?
+1
momoshenchi
14 八月 2020, 14:24
没搞懂
0
ZZZNET
28 九月 2021, 02:49
private 不能被重写
0
sky
21 八月 2022, 13:46
改成public是新的方法了吗?
0