编译时多态?

时间:2012-04-30 00:12:08

标签: java

本书即时阅读说,当你覆盖子类中的方法时,它意味着运行时多态性。是否有像编译时多态这样的东西?我认为简单的继承发生在编译时,然后多态是运行时。

2 个答案:

答案 0 :(得分:2)

他们暗示重载方法,有时也称为编译时多态

实际上,方法重载允许您根据作为参数传入的对象类型调用不同的代码片段。重载在编译时解析,因此重载机制可以被认为是编译时多态。

答案 1 :(得分:1)

Lucca Cardelli有一篇名为On Understanding Types, Data Abstraction and Polymorphism的精彩文章,详细解释了你的问题的答案。

您在问题中提到的内容称为ad-hoc polymorphism,包含方法重载和类型cohercions(如运算符重载中的那些),这两个在编译时发生。另一方面,为给定方法选择正确的实现在运行时发生,这是所谓的parametric or inclusion polymorphism的一部分。

但我相信Lucca Cardelli会给你一个比我想象的更好的答案。

最近我在这个论坛中参与了another similar question,我提供了这两种类型的多态性的一些例子。你可能想看一看,虽然我觉得这是你可能已经知道的事情。

您可能还想阅读Polymorphism in Object-oriented Programming languages