开发者社区> 问答> 正文

Java中子类重载的问题

比如我现在又两个具有继承关系的类:
父类:Animal
子类:Dog
在父类中有一个方法eat()
在子类中,除了继承了父类的eat()方法外,我自己还写了一个eat()的重载方法:eat(String a)
然后创建对象:
Animal a = new Dog();
为什么在创建对象a后,调用eat方法时,不能调用eat(String a)方法,而只能调用eat()方法?

展开
收起
蛮大人123 2016-06-12 17:35:39 2612 0
2 条回答
写回答
取消 提交回答
  • 重载指同一个类中存在多个同名方法,方法的参数类型或参数个数不一样,跟返回类型和修饰符无关。子类继承父类后,也同时继承父类的所有方法,可以重载父类方法。
    2019-07-17 19:34:47
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    一个是eat(),一个是eat(String a)。参数类型不一样,也就是没有覆盖。那么,animal a = new dog();已经向上转型了,dog已经是animal,所以运行的也应该是animal里面的方法,而不是dog里面的方法。但是如果另一种情况dog里面的方法也是eat()的话,那就方法覆盖了,这个时候就会运行dog里面的eat了。

    2019-07-17 19:34:46
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载