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

本节例题中animal可以强制转换成Dog类,为什么不能强制转换成Cat类?Cat类和Dog类都是Animal类的子类啊。

本节例题中animal可以强制转换成Dog类,为什么不能强制转换成Cat类?Cat类和Dog类都是Animal类的子类啊。

正在回答

4 回答

animal对象,是由Dog类的对象通过自动类型转换得来的,对象的属性和方法可以和Dog类的对象相匹配,所以可以再强制转换为Dog类,而不能匹配Cat类,所以不能强制转换为Cat类。

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

Cat cat=(Cat)animal;

这个语句在编译是是Cat类型的,在运行时是Dog类型的,两种类型不匹配,所以会报错。

也可以  这样理解 ,在程序刚开始运行是,系统为Dog类开辟一块内存地址空间,Dog类属于animal类,所以Dog类可以转,但是Cat类就不可以了,应为Cat类不属于Dog类,所以  不可以转

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

简单说,animal之所以可以强制转换为Dog类是通过“Animal animal = dog”语句先自动转换了的,所以animal跟Dog相匹配,如果Cat类跟Dog类一样先通过“Animal animal2 = cat”语句自动转换后再来强制把animal2转换成Cat也是可以的。你可以自己上手去操作一下,你就能更好的去了解了

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

因为animal已经被强制转换成Dog类,Dog类跟Cat类不匹配所以不能再进行转换。你可以先将animal强制转换成Cat类,那就不能再强制转换成Dog类了。

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

举报

0/150
提交
取消

本节例题中animal可以强制转换成Dog类,为什么不能强制转换成Cat类?Cat类和Dog类都是Animal类的子类啊。

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