logomanwolf
2016-10-13 06:16
采纳率: 66.7%
浏览 1.1k
已采纳

【新人第一啼】java中的小问题

刚做到一道题,有关继承的。为什么这道题输出结果不是7?没有电脑码字不方便,就只有图了。。
图片

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • 壹叁伍柒镹 2016-10-13 07:45
    已采纳

    1、父类 TestDemo 中的 main()函数调用的是子类 Demo 中的 some()方法,传入参数为7
    2、接下来的执行步骤是调用子类中public void some(int x)方法,传入x值为7,继续执行super.some(x),此句作用是调用父类中的
    some(int x)方法,传入x值为7,此时即父类中的m=7,继续执行System.out.println(m),此句作用输出m的值,该m是子类中定
    义的m,与父类中的m值无关,而子类的m值一直未被修改过,即仍然是初始值8
    3、所以选 B

    打赏 评论
  • zparkdong 2016-10-13 06:30

    子类中覆盖了父类中的some()方法,虽然子类中又用super调了父类中的some(),但是只是修改了父类的m,输出的还是子类的m

    打赏 评论
  • xuxuyayaya23 2016-10-13 06:42

    就是好样的心不错,美眉图片

    打赏 评论
  • 东风玖哥 2016-10-13 06:49

    你仔细看看,传的值是x,求的是m

    打赏 评论
  • 秋末意微凉 2016-10-13 07:45

    这就要看M是在父类中输出还是在子类中输出了

    打赏 评论
  • zecr123 2016-10-13 08:24

    因为题目输出的m用的是子类那个 你可以把那个输出改成System.out.println(super.m) ,这个才是你所想的结果

    打赏 评论
  • jetVae 2016-10-13 09:23

    demo中的some输出的m相当于this.m,是本实例也就是子类实例的属性,如果输出的为super.m答案就是7

    打赏 评论
  • Xth8013 2016-10-14 06:42

    子类父类各有一个整型变量m,存储空间不同。super.some(x)是对父类的m进行赋值,并不会改变子类的m,然后输出的是子类的m值。

    打赏 评论
  • zhanglixin_1984 2016-10-27 07:12

    子类和父类中,相同的方法会被重写,变量没有重写之说,如果子类声明了跟父类一样的变量,那意味着子类将有两个相同名称的变量。一个存放在子类实例对象中,一个存放在父类子对象中。

    打赏 评论

相关推荐 更多相似问题