为了账号安全,请及时绑定邮箱和手机立即绑定

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

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


正在回答

4 回答

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

1 回复 有任何疑惑可以回复我~
#1

慕粉0958453215 提问者

非常感谢!
2016-11-30 回复 有任何疑惑可以回复我~
#2

堂吉柯德熊

那什么时候强制类型转换成立呢(就是Cat类具备什么条件)?
2017-03-03 回复 有任何疑惑可以回复我~
#3

历飞雨 回复 堂吉柯德熊

强制转换是一个命题,原本这句话没错的。放在特定的地方强制转换就可能不错,也可能会错。因为这类转换有风险,所以需要根据需要来看是对是错。
2017-03-03 回复 有任何疑惑可以回复我~
#4

qq_梦盈华尔兹_0 回复 堂吉柯德熊

Cat cat=new Cat(); Animal animal=cat; Cat cat1=(Cat)animal;
2017-06-12 回复 有任何疑惑可以回复我~
查看1条回复

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信