本节例题中animal可以强制转换成Dog类,为什么不能强制转换成Cat类?Cat类和Dog类都是Animal类的子类啊。

来源:10-2 多态中的引用类型转换

ghcg

2017-07-07 11:58

本节例题中animal可以强制转换成Dog类,为什么不能强制转换成Cat类?Cat类和Dog类都是Animal类的子类啊。

写回答 关注

4回答

  • 慕少3862271
    2017-07-07 15:38:43
    已采纳

    animal对象,是由Dog类的对象通过自动类型转换得来的,对象的属性和方法可以和Dog类的对象相匹配,所以可以再强制转换为Dog类,而不能匹配Cat类,所以不能强制转换为Cat类。

  • qq_剁椒鱼头i_0
    2017-10-22 15:03:21

    Cat cat=(Cat)animal;

    这个语句在编译是是Cat类型的,在运行时是Dog类型的,两种类型不匹配,所以会报错。

    也可以  这样理解 ,在程序刚开始运行是,系统为Dog类开辟一块内存地址空间,Dog类属于animal类,所以Dog类可以转,但是Cat类就不可以了,应为Cat类不属于Dog类,所以  不可以转

  • 慕斯卡1730669
    2017-08-29 02:35:37

    简单说,animal之所以可以强制转换为Dog类是通过“Animal animal = dog”语句先自动转换了的,所以animal跟Dog相匹配,如果Cat类跟Dog类一样先通过“Animal animal2 = cat”语句自动转换后再来强制把animal2转换成Cat也是可以的。你可以自己上手去操作一下,你就能更好的去了解了

  • 燃烧wzy风3961169
    2017-07-22 11:43:38

    因为animal已经被强制转换成Dog类,Dog类跟Cat类不匹配所以不能再进行转换。你可以先将animal强制转换成Cat类,那就不能再强制转换成Dog类了。

Java入门第二季 升级版

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

530636 学习 · 6091 问题

查看课程

相似问题