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

关于equals方法

视频中,Dog other=(Dog)obj;当执行到这句话时,显然这两个对象的类型是相同的。那么我就可以把传进来的对象转化成Dog类型,是什么意思?前半句话不是说了两个类型是相同的么,怎么又要把传进来的对象转化成Dog类型呢?

提问者:qq_小菜_1 2015-12-12 22:50

个回答

  • 慕男婶
    2015-12-12 23:15:29
    已采纳

    并没有看到前面的代码,所以最好是贴下代码。。

    然后我试着回答一下吧,不知道能不能解决你的疑问。

    关于类型转换,有如下规则:

    1、子类型可以转父类型

    2、父类型不一定能转子类型

    比如,人类就是父类型,男人是人类的子类,女人也是人类的子类,所以不管是男人还是女人,都是人类(子类型转父类型)

    但是人类不一定是男人,还有可能是女人(父类型不一定能转子类型)。。

    概括来说就是:男人一定是人,但人不一定是男人。

    如果你能确定某个人是男人,那么就可以进行转型了。

    以你的例子来说,狗是动物,但是动物不一定是狗(还有可能是猫、大象、蛇等等等等)

    如果你确定这个obj确实是狗,那么你就可以用下面的代码来转型:

    Dog other=(Dog)obj;

    如果这个obj不是 Dog 类型的话,会报异常的。