java - 为什么需要动态绑定(bind)?

标签 java dynamic-binding

我不明白为什么我们需要动态绑定(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/

相关文章:

java - 是否有可能在 Java 中有效地实现 seqlock?

java - 是第二个角左边或右边的角

c++ - C++ 中复制对象的动态绑定(bind)

java - 多态性和动态绑定(bind)

java - 当基类被重写时,如何从另一个方法调用基类自己的方法?

java - Tomcat7 maven 插件 - 与 maven 资源插件一起使用时重新加载资源

java - 为什么 lambda 强制我使用单个元素数组而不是最终对象?

方法参数中的 C++ 动态绑定(bind)

python - 如何根据参数类型执行不同的操作

java - Java 中的红黑树或 AVL 树实现