首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法重载是否可以被认为是描述Java多态性的一种方式?

方法重载是否可以被认为是描述Java多态性的一种方式?
EN

Stack Overflow用户
提问于 2017-08-14 17:11:12
回答 5查看 488关注 0票数 0

所以,我在Head First Java上学习,在那里我读到-

重载方法只是一个不同的方法,恰好具有相同的方法名称,它与继承和多态性无关。

然而,我有另一本名为的著名著作-- Herbert的“完整参考”,在这本书中,我读到:

方法重载是Java支持多态性的方式之一。方法重载支持多态性,因为它是Java实现“一个接口、多个方法”范例的一种方式。

哪一个是对的?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-08-14 17:24:36

方法重载是否可以被认为是描述Java多态性的一种方式?

不,这是两个不同的概念。

我认为你不正确地理解了作者的意思。

我大胆地强调了这一重要部分:

方法重载是Java支持多态性的方式之一。方法重载支持多态性,因为它是实现“一个接口、多个方法”范例的一种方式。

这仅仅意味着重载和多态并不是不兼容的。

例如,您可能有一个定义重载方法的接口:

代码语言:javascript
复制
public interface Doable{
   void doX(String s);
   void doX(Integer s)
}

假设MyDoable是它的实现,MyChildDoableMyDoable的子类。

当你写:

代码语言:javascript
复制
MyDoable myDoable = new MyChildDoable(); 
myDoable.doX("a")

编译器将被调用的方法绑定到(overloading),但是在运行时,实例的方法(MyChildDoable)将被使用(polymorshism).。

票数 2
EN

Stack Overflow用户

发布于 2017-08-14 17:18:54

若要在标题中回答您的问题,请不要使用方法重载来描述多态性。

方法重载是当一个类有两个或多个相同名称的方法时,唯一的区别是它的参数。这是一个与多元主义完全不同的概念。

多态是指对象具有多种形式的能力。当父类引用用于引用子类对象时会发生这种情况。

例如,如果我的任务是为一个动物园创建某种类型的应用程序,并且我想记录使用类的动物。我会为每一种动物,“狮子”,“鹰”,“海豚”开设一个名为“动物”的课程。在将动物类声明为子类之后,我可以使用多态的概念来创建“动物”类型的狮子、鹰和海豚。

票数 4
EN

Stack Overflow用户

发布于 2017-08-14 17:37:10

多态性不是一种类型,有不同类型的多态性。请参考这个精彩的链接- Java多态性,以更好地理解它。

重载支持多态性,多态行为调用基于传递的类型参数,并且以临时方式进行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45679595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档