4-2节Animal类型和Dog类型的转换

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

K_Muxs

2016-09-10 14:28

Dog dog = new Dog();

Animal animal = dog;

Dog dog2 = (Dog)animal;

第二行代码是把dog 的Dog类型转换成Animal类型吗?

第三行代码的animal又是从Animal类型强制转换成Dog类型吗?是执行后dog2的类型为Dog类型吗?

这节看得很迷糊,看了好几遍,不知道理解得对不对,望告知。

写回答 关注

2回答

  • 追梦_ing
    2016-09-10 15:28:20
    已采纳

    第二行是把Dog的dog赋给了Animal的animal,第三行是先把animal强转Dog类型然后赋给了dog2,他们属于引用关系

    K_Muxs

    非常感谢!

    2016-09-10 15:59:26

    共 3 条回复 >

  • 罗夏luo
    2016-09-10 15:32:59

    第二行是向上转换,因为Animal类是包含Dog类的,范围更广,前两行其实就相当于普通的父类引用指向子类对象:

    Animal animal = new Dog();

    而第三行是将这个对象animal强制转换成了Dog类;

    K_Muxs

    非常感谢!

    2016-09-10 15:59:54

    共 1 条回复 >

Java入门第二季 升级版

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

530636 学习 · 6091 问题

查看课程

相似问题