向上转型问题

向上转型问题

若子类中eat()方法是复写父类来的。现有一个父类引用比如animal指向子类实例new Cat()。我想调用父类的eat()怎么做呢?

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

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

1回答
提问者 金鱼家 2017-12-15 00:48:05

这个问题是我在做3-16时发现的

Animal  animal = new Cat();

animal.eat();//这句出来的结果却是我子类中的eat()方法中的东西,一开始蒙了一下,后来想想既然我的实体是子类实例,而我子类实例中又复写了eat()方法,所以调用的话应该是子类中的eat()。但是我把鼠标放到animal.eat();的eat()处他提示的确是Anima类的eat(),然后我又蒙了........另外,就算事实就是这样,那我就是要用指向子类实例的这个父类引用调用父类中的那个eat()方法的话,那该怎么办呢?

求老师解答!!!

  • 只有在父类中定义的方法而在子类中没有重写,才可以被父类类型的引用调用,但对于父类中被子类重写的方法,父类类型的引用调用的就是子类中的这个方法。如果想调用父类的方法要么定义成final方法不让子类重写,要么实例化父类对象。
    2017-12-15 11:12:05
  • 提问者 金鱼家 回复 irista23 #2
    好的!谢谢老师!!!!
    2017-12-15 12:26:50
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星

相似问题

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

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

在线咨询

领取优惠

免费试听

领取大纲

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