不明白为什么不能转化为Cat类型,但是可以转化为Dog类型

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

慕粉0958453215

2016-11-22 14:28

Dog dog=new Dog();
Animal animal=dog;
Dog dog2=(Dog)animal;
Cat cat=(Cat)animal;


写回答 关注

3回答

  • 历飞雨
    2016-11-30 17:41:49
    已采纳
    1. 向上类型转换,也就是小类型到大类型的转换。这种转换不需要考虑类型,肯定正确。

    2. 向下类型转换,也就是大转小。这种转换必须考虑类型,也就是只有相同类型才能正确转换。该类型用instanceof类验证。

      楼主你所说的就是第二种转换模式,需要考虑到类型相同,才能正确转换。就Dog dog2=(Dog)animal;这个转换来说是Animal类型转换为Dog类型的,但是在前面Dog dog=new Dog();  Animal animal=dog;已经把Dog类型转换成Animal类型。所以Dog dog2=(Dog)animal;就是一个相同类型的转换

      而Cat cat=(Cat)animal;这个不是相同类型转换,所以是错误的

    qq_梦盈华... 回复堂吉柯德熊

    Cat cat=new Cat(); Animal animal=cat; Cat cat1=(Cat)animal;

    2017-06-12 22:44:44

    共 4 条回复 >

  • 入门_放弃
    2017-05-31 16:01:32

    如果Cat和Dog都转换成Animal,就会覆盖掉,怎么两个都转呢

  • 慕沐0914937
    2016-11-22 14:49:29

    跟第一句话有关系。看明白第一句话。

Java入门第二季 升级版

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

530636 学习 · 6091 问题

查看课程

相似问题