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

4-2节Animal类型和Dog类型的转换

Dog dog = new Dog();

Animal animal = dog;

Dog dog2 = (Dog)animal;

第二行代码是把dog 的Dog类型转换成Animal类型吗?

第三行代码的animal又是从Animal类型强制转换成Dog类型吗?是执行后dog2的类型为Dog类型吗?

这节看得很迷糊,看了好几遍,不知道理解得对不对,望告知。

正在回答

2 回答

第二行是把Dog的dog赋给了Animal的animal,第三行是先把animal强转Dog类型然后赋给了dog2,他们属于引用关系

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

K_Muxs 提问者

这个赋予 是赋予什么?
2016-09-10 回复 有任何疑惑可以回复我~
#2

追梦_ing 回复 K_Muxs 提问者

不好意思,打错了是引用不是赋值,Animal类型的animal指向了子类开辟的内存空间dog
2016-09-10 回复 有任何疑惑可以回复我~
#3

K_Muxs 提问者

非常感谢!
2016-09-10 回复 有任何疑惑可以回复我~

第二行是向上转换,因为Animal类是包含Dog类的,范围更广,前两行其实就相当于普通的父类引用指向子类对象:

Animal animal = new Dog();

而第三行是将这个对象animal强制转换成了Dog类;

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

K_Muxs 提问者

非常感谢!
2016-09-10 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

4-2节Animal类型和Dog类型的转换

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