关于super和this的一些疑问

关于super和this的一些疑问

假设父类有个方法eat,内容是输出吃东西,子类继承父类后在别的方法中调用eat方法,请问写this.eat()和写super.eat()有哪些区别?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕小蓝 2023-11-20 09:37:50

同学你好,同学描述中,如果子类没有重写eat方法,那么两者在结果上没有区别,但是在本质上还是有区别的。任何情况下,使用super会调用父类中的方法,而使用this会调用本类中的方法,并且都是直接调用eat方法,与其他方法无关。也就是说同学描述“子类继承父类后在别的方法中调用eat方法”与这两个语句都没有任何关系。

祝学习愉快~

  • 请问在没有重写的情况下,更好的做法是super.method()还是this.method()? 虽然两者的的行为会是一致的,但感觉从逻辑上会有点差别

    比如说,Dog类调用getName方法的时候(调用的是Animal类的方法),这个时候感觉用this会更合理,因为获取的是某只小狗的名字,而不是仅仅只是某个动物的名字?

    2024-04-14 14:55:40
  • 同学你好,这个问题要从两个方面考虑:

    1.从业务层面考虑:这个方面主要是业务逻辑和后续代码维护上,尤其是维护时对代码的阅读难度上,最好是使用this,这样逻辑会更清晰,利于维护。

    2.从运行效率考虑:这个方面主要是最大限度提高程序的运行效率,此时就建议使用super了,减少运行时对象寻址次数。

    另外,当同学有疑问时,建议单独提交新的问题,如果问题涉及其他同学提过的问题,同学可以附上链接。不建议在其他同学的问题下进行追问。

    祝学习愉快~

    2024-04-15 09:14:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Java工程师 2024版
  • 参与学习       2020    人
  • 提交作业       1249    份
  • 解答问题       1202    个

2024重磅革新,超百小时内容豪华升级,加速提升高级技能与高薪就业竞争力 课程紧贴企业最新人才需求,历经7年持续迭代,帮助万名学子入行转行 从零起点到高阶实战,学习路径稳健顺滑,成就从小白到工程师高薪

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师