问答详情
源自:9-9 Java 中的 Object 类 Ⅱ

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

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

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

提问者:xl曙光 2015-11-21 19:23

个回答

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

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

    说错了请改正!

  • 如果繁星能来到我身边
    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也满足上面的条件

    所以就需要类型强转