这边有点不理解

这边有点不理解

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

第一个意思是先调用父类Animal的shot方法后再转成dog类型的吗?第二种是转成Dog类型后再用Dog类里面的shout方法吗?

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

这个是什么意思?为什么要创建Dog这个实例呢?麻烦老师解答下

正在回答

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

2回答

同学你好,1. (Dog)animal.shout()是转换结果,但调用方法后不能强制转换,所以(Dog)animal.shout()是错误的语句,而((Dog)animal).shout()是将animal对象的类型进行转换。

2. 在test类中父类引用指向子类实例,是无法调用子类独有的方法,所以需要进行转换。

注:同学可以写代码尝试一下。如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

好帮手慕小尤 2019-10-29 11:31:01

同学你好,1. 同学是指(Dog)animal.shout()与((Dog)animal).shout(),如果是,(Dog)animal.shout()表示的是:调用shout()方法后的结果转换为Dog类型。而((Dog)animal).shout()表示的是:将animal转换为Dog类型后,再调用shout()方法。

2. 这里父类的引用指向子类对象。play()方法参数是animal类型,所以需要创建animal类型,想要输出汪汪汪,应该创建Dog类的实例,所以是父类的引用Animal指向Dog类的实例

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

  • 提问者 机智的谢先生 #1
    调用shout()方法后的结果转换为Dog类型,那这和先转换在调用方法有什么不同吗?而且他如果说他不转换而直接调用方法与转换后有什么不同吗?
    2019-10-29 19:27:30
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

登录后可查看更多问答,登录/注册

请稍等 ...
微信客服

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

帮助反馈 APP下载

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

公众号

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

在线咨询

领取优惠

免费试听

领取大纲

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