我不明白为什么我们需要动态绑定(bind)(后期绑定(bind))。假设我们有 A 类和 B 类,并且 B 类扩展了 A 类,现在我们可以编写类似“A var= new B();”的内容 现在假设两个类都包含具有相同签名的方法,例如方法“cry()”现在我可以编写类似“var.cry()”的内容,现在仅基于“var”的类型编译器无法绑定(bind)正确的方法编译期间对实例“var”的方法,但编译器必须检查以下语句是否合法“A var= new B();”现在因为它必须检查该语句是否合法,所以它必须知道“var”将引用类 B 的实例,现在如果它知道这一点,编译器必须能够在编译时绑定(bind)正确的方法?
最佳答案
假设你有
void foo(A someA) {
someA.cry()
}
现在怎么办?没有人可以预先告诉您传入的 A 是 A 还是 B!
换句话说,有很多方法无法在编译时可靠地了解某个对象的确切性质!
关于java - 为什么需要动态绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58467139/