Dog other = (Dog) obj;类型都一样了,为什么还要转换?????

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

xl曙光

2015-11-21 19:23

//如果另一个对象和当前对象类型都不一样,那么肯定不相等,返回false
if (getClass() != obj.getClass())
return false;

//到这一步,传进来的对象肯定和当前对象类型一样了,那么为什么还要有下面的转换呢????????(求解)
Dog other = (Dog) obj;

写回答 关注

4回答

  • 如果繁星能来到我身边
    2016-04-27 15:16:01

    大概是说,obj可能是父类的一个应用,eg:Animal obj=new Dog();

    说错了请改正!

    如果繁星能来...

    写错了,是“引用”

    2016-04-27 15:16:52

    共 1 条回复 >

  • 如果繁星能来到我身边
    2016-04-27 15:12:37

    http://blog.csdn.net/kaiwii/article/details/8042488    多态的父类引用指向子类对象


  • Uestc_L
    2016-01-20 23:01:16

    前面只是判断了类对象是否一致 ,但是并不能保证类的对象也就是属性的值是否相同,如果属性的值不同就会返回false,提示两个对象不相等

  • 天启之魂
    2015-11-21 20:23:52

    这个是多态

    if (getClass() != obj.getClass())
    return false; 只是证明了 obj是Dog这个类的对象,但是多态的父类引用指向子类对象 这时的obj也满足上面的条件

    所以就需要类型强转

Java入门第二季 升级版

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

530559 学习 · 6091 问题

查看课程

相似问题