【发布时间】:2011-06-26 13:04:52
【问题描述】:
我知道这个问题在 StackOverflow 上已经被彻底解决了,并且已经发布了很多问题。 我可能已经阅读了其中的每一个,但是,有一个琐碎的疑问:我认为我非常了解重载和覆盖。让我明白的是多态性。
例如,this question 接受的答案用shape.Draw() 解释了这一点。我对这与覆盖有何不同感到困惑(有时我对它与重载有何不同感到困惑)。
另外——多态本质上是否意味着从抽象类派生? (我认为我读过的关于该主题的几乎所有答案都使用了一个抽象的动物类,并使猫和狗喵喵叫/吠叫:)
总结一下,我的问题是:
什么是多态性 w.r.t.重载和覆盖?
谁能解释一下没有抽象类的多态性 - 谢谢!
重载/覆盖不是多态性的子类型,是吗?
编辑添加第三个问题并修改第二个问题。
【问题讨论】:
-
重载与子类型/接口 (Java) 多态性是正交的。每个重载的方法都有一个 distinct 签名。编译器只是省去了选择(可能更好的)唯一名称的工作:-)
标签: java polymorphism overloading overriding