类型转换问题

类型转换问题

定义一个父类Animal和一个子类Dog

Animal  one = new Animal();

Dog dog = new Dog();

dog = new Animal();

dog = (Dog)one;

倒数第二行直接报错,倒数第一行虽然不报错但运行报错那么请问代码最后两行怎么解释,能以内存引用解释吗?

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

可以有Animal  one = new Dog();向上转型。但没有Dog dog= new Animal();无法自动向下转型。“子类改写Object类的toString方法不就是用到的向下转型吗”,这个向下转也是转的子类的对象,new的时候就是子类,然后变成父类,再变子类是可以的。但你直接就是new有子类,这是转不了的。祝:学习愉快

Lucas_ke 2018-08-19 07:30:46

多态指的是   将子类对象赋值给父类对象引用,表现的是向上转型,而向下转型必须通过强制类型转换,也就是为什么倒数第二行代码报错的原因,具体课程也会在多态里面详细讲到。

  • 提问者 慕圣2241928 #1
    向下转型虽然不报错但运行时也报错呀,还有就是子类改写Object类的toString方法不就是用到的向下转型吗,那为啥不报错呢?而且还达到了预期效果
    2018-08-19 10:33:02
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师