关于equals( )方法重写的疑问?

来源:9-9 Java 中的 Object 类 Ⅱ

幕布斯9297580

2018-08-30 14:10

重写equals( )方法时,

if (getClass() != obj.getClass())

return false;

执行完后,已经保证了原有对象和传入对象obj的类型相同,

为什么后面仍要执行

Dog other = (Dog) obj;

将传入对象obj转化为原有对象的Dog类型?

不可以这样写吗?如下:

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

if (age != obj.age)

return false;

return true;

}


写回答 关注

1回答

  • 小小龍
    2018-08-30 17:57:18
    已采纳

    Object类是所有类的父类,跟Dog类不是同一类型的。需要向下转型成Dog类,这样才能比较。

    weixin... 回复忘记过去丶

    老师,我还是不明白,调用equals()时,传入的不就是Dog类吗,为什么变成了object类了

    2019-08-04 17:53:35

    共 3 条回复 >

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530646 学习 · 6091 问题

查看课程

相似问题