老师,这里的参数是Object类的,可是我们传进去的对象是Animal类的,为什么不会报错

老师,这里的参数是Object类的,可是我们传进去的对象是Animal类的,为什么不会报错

https://img1.sycdn.imooc.com//climg/61344a2609020e8908880336.jpg

视频里实例化两个Animal类的对象,然后去调用的这个方法。​

正在回答

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

2回答

同学你好,Object类是所有类的父类,这里的参数类型是Object类型,调用该方法时可以传入其子类,所有可以传入Animal类

祝学习愉快~

  • 西封图南 提问者 #1
    传入的子类也会自动转换为Object类型,所以下面的代码块里才需要将类型再转回Animal,老师这样理解对吗
    2021-09-05 16:23:03
  • 好帮手慕阿园 回复 提问者 西封图南 #2

    同学你好,并不是哦,在方法中将obj转为Animal是因为在方法中传入的是Object类型的,需要转换为Animal后才可以调用Animal中的方法,如getName()等

    祝学习愉快~


    2021-09-05 17:33:50
瑶光飞羽 2021-12-10 21:19:07

学到后面的多态你就知道了,往方法里传入的是Object类型的引用,这个引用指向的是一个Animal 类型的实例,就相当于Object obj=new Animal(),父类可以指向子类的实例,是一个向上转型。而下面的Animal temp=(Animal)obj 只是更改了引用的类型,obj还是一个Animal类的实例,这一步其实是向下转型,把指向obj的引用类型从之前的Object更改为Animal了才能调用Animal特有的get方法。

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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