多态还存在于方法重载中吗?

时间:2014-06-19 03:55:47

标签: java polymorphism overloading

很长一段时间以来,我认为多态定义为一个继承自另一个类的类,因此继承类的类型比超类更窄。然而,最近我被告知方法重载也称为多态。我目前的印象是方法重写和方法重载分别称为运行时和编译时多态。

我的问题如下:

  1. 我是否正确地考虑方法覆盖和方法重载 作为运行时和编译时多态?
  2. 您是否需要覆盖任何内容以使方法过载?

2 个答案:

答案 0 :(得分:2)

首先,重写和超载,两者都不同。你是对的,重载被称为静态或编译时多态。在编译时本身,Java编译器将方法调用绑定到相应的调用者,从而绑定该术语。在动态或运行时多态中,绑定被推迟到执行。我们可以使用继承来执行运行时多态性。

答案 1 :(得分:0)

重载 确实是 形式的polymorphism虽然 在{0>圈 1 中经常讨论甚至承认<{3}}和 not 的那个 - 但我们可以改变它!

  

.. polymorphism是为不同类型的实体提供单个接口。

也就是说,重载是编译时的Subtyping

  

在编程语言中,ad hoc多态是一种多态,其中多态函数可以应用于不同类型的参数,因为多态函数可以表示许多不同的和可能异构的实现,具体取决于参数的类型(s )它适用于它。 [ad hoc polymorphism]也称为函数重载或运算符重载。

重载方法可能参与运行时Ad hoc (Overloading) Polymorphism - 通过方法覆盖,接口和虚拟调度在Java中实现。


请参阅这些其他问题;选择是基于[详细]答案的问题,[大部分]支持上述案例。

其他资源;再次选择支持上述案例..


1 Lecture Notes on Polymorphism没有提到重载多态;但它也没有提到接口足以支持(或暗示)Java中的子类型多态性。