调试、调试和再调试

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