很长一段时间以来,我认为多态定义为一个继承自另一个类的类,因此继承类的类型比超类更窄。然而,最近我被告知方法重载也称为多态。我目前的印象是方法重写和方法重载分别称为运行时和编译时多态。
我的问题如下:
答案 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中的子类型多态性。