多态性,重载和覆盖类似的概念?

Amm*_*aja 31 oop polymorphism overriding overloading

我对多态,重载和覆盖的概念非常困惑,因为它对我来说似乎是一样的.请解释这些概念,它们如何彼此不同

很困惑所以请指导我.

谢谢

Xav*_*ica 61

多态性可以通过覆盖来实现.简而言之,多态性是指对象根据其自身的性质提供不同行为(使用不同的实现)的能力.具体来说,取决于它在类层次结构中的位置.

方法重写是指超类或接口中定义的方法由其子类之一重新定义,从而修改/替换超类提供的行为.调用实现或其他实现的决定是在运行时动态获取的,具体取决于调用操作的对象.请注意,覆盖时方法的签名保持不变.

方法重载与多态无关.它指的是定义方法的不同形式(通常通过接收不同的参数数量或类型).它可以看作是静态多态.调用实现或其他实现的决定是在编码时进行的.请注意,在这种情况下,方法的签名必须更改.

运算符重载是一个与多态性相关的不同概念,它指的是某个语言相关运算符根据其操作数的类型表现不同的能力(例如,+可能意味着与Strings 连接并添加数字操作数).

维基百科中的示例非常具有说明性.

以下相关问题可能也很有用:

  • 重载与多态性无关吗?重载是编译时多态。在运行时多态性方面 (2认同)

bas*_*sar 7

不久,不,他们不一样.

重载意味着创建具有相同名称但不同参数的方法.

重写意味着在子类中重新定义超类方法的主体以更改方法的行为.

多态性是一个广泛的概念,包括覆盖和重载以及更多的范围.维基百科对多态性的描述可以帮助您更好地理解多态性.特别是Subtype多态(或包含多态)部分是你应该看的地方.