Mar*_*nik 17
"多态性"只是一个词,并没有全球一致的精确定义.你不会被你的问题的"是"或"否"答案所启发,因为差异将在所选择的"多态性"定义中,而不是作为任何特定语言的特征的方法重载的本质.你可以在这里看到大多数其他答案中的证据,每个答案都引入了自己的定义,然后根据它来评估语言特征.
有两种类型的多态性.
重载是静态多态的类型.重写属于动态(或运行时)多态.
REF.http://en.wikipedia.org/wiki/Polymorphism_(computer_science)更详细地描述了它.
不,超载不是.也许你指的是方法重写,这确实是多态的一部分.
进一步澄清,来自维基百科:
多态性与方法重载或方法重写不同.1 多态性仅涉及将特定实现应用于接口或更通用的基类.
所以我会说方法覆盖和方法重载以及某些语言关于多态的方便特性,但不是多态性(在面向对象编程中)的主要关注点,它只关注对象的行为能力,就好像它是层次结构中的另一个对象一样链.
小智 6
方法覆盖或重载不是多态性。正确的说法是多态可以使用方法覆盖或重载以及使用其他方式来实现。
为了使用方法覆盖实现多态,您可以覆盖子类中方法的行为。
为了使用方法重载实现多态,你需要编写许多名称相同、参数数量相同但数据类型不同的方法,并在这些方法中实现不同的行为。现在这也是多态性。
其他实现多态的方法是运算符重载和实现接口。
除了维基百科迂腐之外,考虑多态性的一种方法是:单行代码/单个方法调用在运行时根据用于调用的对象实例的类型执行不同的操作的能力.
方法重载不会在运行时更改行为.在编写和编译代码时,重载为同一方法名称的参数列表提供了更多选择,但是在编译时,选择将永久修复在代码中.
不要与方法覆盖相混淆,方法覆盖是多态的一部分.
| 归档时间: |
|
| 查看次数: |
25284 次 |
| 最近记录: |