【发布时间】:2019-10-19 19:10:41
【问题描述】:
我不明白为什么我们需要动态绑定(后期绑定)。假设我们有 A 类和 B 类,并且假设 B 类扩展了 A 类,现在我们可以编写诸如“A var= new B();”之类的东西 现在假设两个类都包含具有相同签名的方法,例如方法“cry()”现在我可以编写类似“var.cry()”的东西,现在仅基于“var”的类型编译器无法绑定权利编译期间实例“var”的方法,但编译器必须检查以下语句是否合法“A var= new B();”现在,因为它必须检查该语句是否合法,它必须知道“var”将引用类 B 的实例,现在如果它知道这一点,编译器必须能够在编译时绑定正确的方法?
【问题讨论】:
-
编译器检查当你分配它时它是有效的,当你调用一个方法时它是有效的。在一般情况下,没有办法消除这两个检查之间的分裂。因此后期绑定。
标签: java dynamic-binding