D选项的问题

D选项的问题

为什么D选项去掉new后会抛出异常呢?

正在回答

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

2回答

同学是想这样写是吗?

Animal  pet=new Animal();   

Roo  roo=(Roo)pet;

同学可以这样想一下,如上是下边这样:

Animal  pet=new Roo ();   

Roo  roo=(Roo)pet;

我们把它还原一下就是,

你知道有一个袋鼠(new Roo (); ),你和你的朋友说,我发现一个动物pet。(Animal  pet=new Roo ();   )

然后这个动物是袋鼠roo。(Roo  roo=(Roo)pet;) 这个是可以的。

但是不可以说,你发现有一个动物,(Animal  pet=new Animal(); )

你和你的朋友说,我发现一个袋鼠(Roo  roo=(Roo)pet; ) 

当你只知道pet是一个动物的时候,不能说pet是一个袋鼠。

当你明确知道别人说的pet是就是袋鼠的时候比如(Animal  pet=new Roo ();   ),你才可以强转成袋鼠(Roo)类型。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小班 2019-04-24 13:03:27

同学,你好   D选项是Animal  pet=new Animal();   Roo  roo=new (Roo)pet;  当把new关键字去掉后-->Roo roo=(Roo)pet,就是把一个Animal的类强转为Roo类,这在运行中是会报错的,因为在java中接收类的范围必须比new 出来的类范围大,也就是说,父类= new 子类,这个是没有问题的,不可以反着执行!

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 ARUKANA #1
    可是强转不就是大类转为小类吗。比如B项,不就是Animal类型转化为Roo吗?
    2019-04-24 13:49:36
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

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