所有的动态绑定(bind)都被认为是多态性吗?具体来说,我说的是Java。如果没有,请解释这两个术语。
我所知道的是:并不是所有的继承都是多态,但是所有的多态都使用了继承。
最佳答案
首先dynamic binding (或后期绑定(bind))是一个不恰当的术语。您正在谈论dynamic dispatch这是另一回事。
动态绑定(bind)是选择在运行时调用方法的哪个实现,但这在 Java 中不会发生。但是你有动态分派(dispatch),它能够在编译时选择方法的正确多态实现(这通常转化为选择方法/函数的最专业版本 )。
但我不会说动态分派(dispatch)是多态性,我想说的是,为了支持多态性,您需要一种机制来选择方法的正确实现,这就是动态分派(dispatch)。
继承是一种多态性,称为 subtyping (或子类型多态性)所以,与你所说的相反,继承始终是多态性的一种形式,但还存在其他类型的多态性,请考虑:
- ad hoc polymorphism (通过重载实现)相同的函数在应用于不同的参数时具有不同的含义
- parametric polymorphism (用 Java 中的泛型实现)如果您拥有带有类型变量的类型,则单个类型可以通过将变量绑定(bind)到特定类型(或一类类型)来表达无限数量的类型,请考虑
List<Integer>
关于java - 所有的动态绑定(bind)都是一种多态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31039848/