java - 方法重载是一种多态性吗?

标签 java oop polymorphism overloading object-oriented-analysis

我正在研究静态和动态多态性并获得了这些链接:

http://guruzon.com/1/oop-concepts/polymorphism/what-is-polymorphism-example-tutorial-uml-diagram-notation

http://www.coderanch.com/t/379004/java/java/static-polymorphism-dynamic-polymorphism

http://javarevisited.blogspot.in/2011/08/what-is-polymorphism-in-java-example.html

在所有这些链接中,都说重载是多态性的一个例子,然后我又遇到了两个地方说重载与多态性无关,链接是:

Is Method Overloading considered polymorphism?

Head First Java 第 2 版第 7 章(继承与多态)上一主题:重载方法 Screenshot of headfirst page

现在我无法弄清楚它是否是一种多态性,如果不是的话,OOP 中是否有所谓的静态多态性?

最佳答案

有时,方法重载确实被称为“静态多态性”的一个例子。这种指定确实有些武断,但可以对其进行较弱的辩护。

静态多态的概念确实存在,而且不限于OOP。当基于编译时类型信息实现多态行为时,多态性(以不同形式呈现相同行为的能力)可以是静态的。这种多态性最常见的例子是 C++ 的模板:所有调用都是静态解析的,但模板的行为会根据其类型参数的静态类型进行更改。

重载也可以被认为是基于对象的静态类型选择行为的原始形式。然而,这种重载的观点无助于理解概念,也让新手更难理解“真正的”(即动态的)多态性。这就是为什么“静态多态性”这个术语在 Java 书籍中并不常见。

关于java - 方法重载是一种多态性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20784493/

相关文章:

java - 当实现类有自己的compareTo时,List<Interface>上的Collections.sort

java - 具有多个菜单项的操作栏启动 Intent 行为

java - 如何从特定的jar加载实现类

javascript - 如何从 js 中的数组对象中仅获取少量属性

oop - 仅具有副作用的方法的名称

java - 什么是泛型的 C++ 等价物?

ruby-on-rails - 多态模型、Forms 和 AssociationTypeMismatch

java - 安卓 : Place non-clickable view above all application windows but below notification bar

java - 在暂停()和播放()之后VLCJ无法显示视频

jquery - 将类从 Mootools 转换为 jQuery 或经典 javascript