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

为什么转换成dog可以,而不能转换成cat


http://img1.sycdn.imooc.com//578234d700016efc06600379.jpg

dog和cat同为不同子类的对象


正在回答

2 回答

你要看代码哦:

Dog dog=new Dog();

Animal animal=dog();

Dog dog2=(Dog)animal;

Cat cat=(Cat)animal;

代码 分析:

Dog dog=new Dog(); //new了一个Dog()对象,并被dog指向;

Animal animal=dog; //创建变量animal 并赋值为dog;也就是说把dog的指向赋值给animal;

上面其实可以综合成一句代码:Animal animal = new Dog();其实就是父类实例化子类对象,即多态;

Dog dog2=(Dog)animal;//创建dog2,为其赋值animal的指向,由于animal的类型是Animal,大(Animal)转小(Dog),所以需要强制类型转换;

最后关键来了,创建了一个Cat类型的cat,然后为其赋值animal:

Cat cat=(Cat)animal;

注意:此时animal是Animal类的Dog对象,也就是说你拿动物类中的一只小狗这个对象,去把它变成猫类中的一只猫,你考虑过汪星人的想法么?汪星人不愿意啊,当然是不行的。

那为什么之前一句可以呢?之前一句的意思是说,把动物类的一只小狗,放进狗类里然后改名叫dog2,那汪星人当然愿意啊,多好啊,找到归宿了。但是动物类中叫dog的这只小狗其实和狗类中叫dog2的小狗,是同一只大汪汪啊~~~

话说回来,这只小狗真可怜,被你们这帮程序员拎过来拎过去的,还要变成猫,哎~~~

木刻回答,必属精答,纯手打,望采纳~~

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

3128 提问者

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

给自己加油

不错,谢谢
2016-08-09 回复 有任何疑惑可以回复我~

狗当然不能转到猫了。。但可以把狗叫成动物。 类型只能为本类或父类。

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

举报

0/150
提交
取消

为什么转换成dog可以,而不能转换成cat

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