Dog dog=new Dog(); Animal animal=dog; Dog dog2=(Dog)animal; Cat cat=(Cat)animal;
向上类型转换,也就是小类型到大类型的转换。这种转换不需要考虑类型,肯定正确。
向下类型转换,也就是大转小。这种转换必须考虑类型,也就是只有相同类型才能正确转换。该类型用instanceof类验证。
楼主你所说的就是第二种转换模式,需要考虑到类型相同,才能正确转换。就Dog dog2=(Dog)animal;这个转换来说是Animal类型转换为Dog类型的,但是在前面Dog dog=new Dog(); Animal animal=dog;已经把Dog类型转换成Animal类型。所以Dog dog2=(Dog)animal;就是一个相同类型的转换
而Cat cat=(Cat)animal;这个不是相同类型转换,所以是错误的
如果Cat和Dog都转换成Animal,就会覆盖掉,怎么两个都转呢
跟第一句话有关系。看明白第一句话。