问答详情
源自:10-2 多态中的引用类型转换

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

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


提问者:慕粉0958453215 2016-11-22 14:28

个回答

  • 历飞雨
    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;这个不是相同类型转换,所以是错误的

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

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

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

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