为什么转换成dog可以,而不能转换成cat
dog和cat同为不同子类的对象
dog和cat同为不同子类的对象
2016-07-10
你要看代码哦:
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的小狗,是同一只大汪汪啊~~~
话说回来,这只小狗真可怜,被你们这帮程序员拎过来拎过去的,还要变成猫,哎~~~
木刻回答,必属精答,纯手打,望采纳~~
举报