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

为什么dog就可以强制类型转换,而cat就不行?不都是动物的子类么?

为什么dog就可以强制类型转换,而cat就不行?不都是动物的子类么?

正在回答

5 回答

因为你没有创建cat类型的对象你创建cat对象就可以强制转换

Cat cat= new Cat();创建这个就可以转换了;

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

能不能转换请查看instanceof....你明白了这个关键字,就明白原因了。

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

他们都是动物 所以猫狗都阔以转化为动物 但猫狗之间不能转化 物种不同


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

【对象dog】转换成【对象animal】,两个对象的地址是一致的“Dog@……”

Cat类的对象,运行时引用的是应该是“Cat@……”的地址

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

qq_慕九州123895

那为什么不可以是三个同一个地址呢,dog,cat,和animal 对象,我也不太明白,在内存中是怎样的状态,求解,谢谢
2019-10-26 回复 有任何疑惑可以回复我~
#2

回锅锅包肉 回复 qq_慕九州123895

你没有搞明白三者之间的关系,animal是父类类型他的子类是dog,和cat 三块内存 dog和cat没有关系 。如果同一个内存地址父类会调用子类方法,这样就违背了规范。规范是父类不能调用子类方法,子类可以调用父类方法。懂了吧
2019-12-22 回复 有任何疑惑可以回复我~

他是将dog对象转换为父类对象animal,子类可以转换为父类,初始对象是dog,dog跟cat类是同级别的,所以不能转换为cat类

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

举报

0/150
提交
取消

为什么dog就可以强制类型转换,而cat就不行?不都是动物的子类么?

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