向下转型的疑问

向下转型的疑问

Animal two=new Cat();  Cat temp=(Cat)two;这是成立的。但是,没有前面的向上转型,后面的向下转型就无法实现呢?因为Cat temp=new Animal()  子类无法直接创建父类对象,所以无法成立。

正在回答 回答被采纳积分+1

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

2回答
好帮手慕珊 2018-04-23 14:02:32

你是说为什么像下面这种情况会出现运行时异常吗?Cat虽然是Animal子类,但是Cat毕竟不是Animal类的对象,这么做是存在风险的。如果还有其他的子类,那么Animal animal=new Dog();此时Cat cat=(Cat)animal;依然可以编译通过,但是把Dog对象强转成Cat肯定是有问题的,所以会报类型转换的异常。

http://img1.sycdn.imooc.com//climg/5add762400013dc112470365.jpg

祝学习愉快!

一叶知秋519 2018-04-20 17:03:55

Animal是抽象类,抽象类不能被实例化,所以Cat temp=new Animal()是无法成立的。祝学习愉快!

  • 提问者 KABOKUO #1
    我的意思是:如果没有对父类进行实例化,就无法进行向下转型呢?
    2018-04-23 10:59:25
  • irista23 回复 提问者 KABOKUO #2
    子类的引用不能指向父类的对象
    2018-04-23 14:08:17
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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