为什么维基百科说"多态性与方法重载或方法重写不同".

Hai*_*yen 6 oop polymorphism overriding overloading

我环顾四周,找不到任何类似的问题.

这是我从维基百科得到的段落:

多态性与方法重载或方法重写不同.多态性仅涉及将特定实现应用于接口或更通用的基类.方法重载是指在同一个类中具有相同名称但签名不同的方法.方法重写是子类替换其父级方法中的一个或多个的实现.方法重载和方法重写都不是多态的实现.

任何人都可以在这里更清楚地解释它,特别是"多态性与方法重写不同"的部分吗?我现在很困惑.提前致谢.

Kar*_*nek 6

多态性(非常简单地说)可以使用期望基类的派生类:

class Base {

}

class Derived extends Base  {

}

Base v = new Derived(); // OK
Run Code Online (Sandbox Code Playgroud)

另一方面,方法覆盖就像Wiki所说的一种改变派生类中方法行为的方法:

class Shape  {
  void draw() { /* Nothing here, could be abstract*/ }
}

class Square extends Shape  {
  @Override
  void draw() { /* Draw the square here */ }
}
Run Code Online (Sandbox Code Playgroud)

重载与继承无关,它允许定义更多具有相同名称的函数,这些函数仅在它们所采用的参数中有所不同.