4 回答
已采纳
JustWannaHugU
TA贡献452条经验 获得超796个赞
向上转型和向下转型都是java多态性的一种体现手段,只是向上转型不用强制转换
向上转型即父类引用指向子类对象
Gril是父类,漂亮女孩MMGril是子类
那么,
Girl g1=new MMGirl(); //向上转型
MMGirl mmg=(MMGirl)g1; //向下转型,编译和运行皆不会出错
此时mmg指向的实际上还是子类漂亮女孩对象MMGirl,所以这里的向下转型是安全的。因为g1指向的是子类对象。
而
Girl g2=new Girl();
MMGirl mmg1=(MMGirl)g2; //不安全的向下转型,编译无错但会运行会出错,此时mmg1指向的是由父类对象Girl强制转换成的假MMGirl对象
试想,每个女孩Girl都会笑,但是漂亮女孩MMGirl具有蛊惑男人的微笑但是普通女孩没有
现在我把一个普通女孩强制转换成了MMGirl,虽然面子上过去了(表现为能编译)但是她不具备勾人心魄的微笑呀!(这就是不安全的体现)
能理解了吧?
CHANGEWOW
TA贡献4条经验 获得超1个赞
你的回答让我有了一些些感觉,我很赞同,但我能不能这样假设:double 强制转int 比如24.8会变成24
那么向下转型是不是有这样的缺少才导致不安全的
添加回答
举报
0/150
提交
取消