重写的方法中的自己的调用是如何调用的?

重写的方法中的自己的调用是如何调用的?

视频中重写了equals()方法,但是在重写的方法体中又调用了equals方法,重写的方法中的调用是调用的重写前的还是重写后的equals()方法?

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

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

3回答
飞越罗格镇 2020-02-26 23:31:09

已Cat类为例

重写的equals()[1]方法,比如public boolean equals(Object obj),是Cat类的

而在equals()[1]方法中调用的equals()[2]方法,比如cat.getName().equals(),是属于String方法的,cat.getName()返回了String类型。

equals()[1]和equals()[2]是不同类的,所以不会有冲突呀。

我理解你纠结的问题应该是这个点吧?


好帮手慕小脸 2020-02-26 16:20:05

同学你好,我们在进行equals比较的时候,它是拿符合条件的这个内存中的元素的集合来和当前对象进行equals比较的。如下图所示:

对象不相等时,会比较obj是否是Cat类对象,如果是,强制转换并返回属性比较后的结果。所以并不会陷入死循环

http://img1.sycdn.imooc.com//climg/5e56282d09fe342910110337.jpg

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 慕数据0164170 #1
    那么红圈中的equals方法是Cat类中重写的方法还是String类中的原始equals方法?
    2020-02-27 09:03:35
  • 好帮手慕小脸 回复 提问者 慕数据0164170 #2
    同学你好,是String类的equals方法。 如果我的回答解决了你的疑惑,请采纳,祝学习愉快!
    2020-02-27 17:59:21
好帮手慕小脸 2020-02-26 11:33:05

同学你好,重写的方法中的调用是调用的重写后的equals()方法。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 慕数据0164170 #1
    但是他还没有写完重写后的方法,怎么可以使用呢? public boolean equals(Object obj) { //判断对象是否相等,相等则返回true,不用继续比较属性了 if (this == obj) { return true; } //判断obj是否是cat类对象 if (obj.getClass() == Cat.class) { Cat cat = (Cat) obj; return cat.getName().equals(name) && (cat.getMonth() == month) && cat.getSpecies().equals(species); } return false; } 比如视频中重写的equals方法,还没有写完就调用不是就循环调用了吗?应该会陷入死循环啊
    2020-02-26 11:37:17
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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