关于向上转型

关于向上转型

老师您好,我在自己练习时候发现了一个问题,下面代码的输出结果都是num = 6,所以应该对象d和c都进行了向上转型,对象c向上转型是因为number()方法传入的是Animal的引用,但是为什么对象d也进行了向上转型呢?


http://img1.sycdn.imooc.com//climg/6074f14c0984feb204070287.jpg

http://img1.sycdn.imooc.com//climg/6074f16f09dcc13603540143.jpghttp://img1.sycdn.imooc.com//climg/6074f1810921607703610156.jpg

http://img1.sycdn.imooc.com//climg/6074f1900998a34804290300.jpg

http://img1.sycdn.imooc.com//climg/6074f1aa09a1aea906700148.jpg


正在回答

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

2回答

同学你好,子类对象调用继承自父类的方法时不会向上转型,​这里d对象也不是向上转型了,同学可以理解为当一个方法只在父类中定义时,调用该方法时会使用父类中的属性。

祝学习愉快~

好帮手慕阿满 2021-04-13 11:49:47

同学你好,这里对象d调用的是Animal类中的number()方法。如果Dog类中重写了number()方法,d对象调用Dog类中的number()方法,this.num将会输出3,而不是6.

祝学习愉快~

  • 您能解释一下为什么会向上转型吗?不是很理解。子类对象调用继承自父类的方法的时候都会向上转型吗?


    2021-04-13 11:53:33
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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