• 手机版

    扫码体验手机版

  • 微信公众号

    扫码关注公众号

国内首家协议开发

软芯音视解码保护平台

在线
客服

发布
需求

在线
聊天

天盟
APP

天盟APP下载

关注
微信

微信扫一扫访问
顶部

java为什么向下转型是不安全的?

向上转型会使子类覆盖的方法丢失,那么向下转型呢?为什么说是不安全的,强制转换的话会丢失什么数据?

免责声明:本内容仅代表回答会员见解不代表天盟观点,请谨慎对待。

版权声明:作者保留权利,不代表天盟立场。

使用道具 举报

全部参与3

向上转型和向下转型都是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,虽然面子上过去了(表现为能编译)但是她不具备勾人心魄的微笑呀!(这就是不安全的体现)
能理解了吧?

使用道具 举报

男人是人,但人不一定都是男人。

使用道具 举报

子类转父类不一定不会报错,父类转子类就可能会报错可以参考一楼的例子

使用道具 举报

发新帖

发布任务需求已有1031289位用户正在使用天盟网服务

发布分类: *
任务预算: *
需求内容: *
手机号码: *
任务商家报价为
  • 预算价 :
  • 成交价 :
  • 完工期 :
  • 质保期 :

* 最终任务项目以服务商报价、双方协商为准!