我读过很多关于 Java 中静态绑定和动态绑定之间区别的文章,但没有一篇真正谈论为什么我们需要动态绑定。为什么某些代码应该只在运行时绑定?为什么不能在编译时绑定所有代码?
我理解方法覆盖和多态性的概念,但我不明白的是为什么编译器(在编译期间(无法识别对象来自子类,而应该只使用该方法。
动态绑定允许相同的例程(函数、方法(作用于不同的 types.it 这对于遵守Liskov's Substitute Principal
例如
Set<Employee> fmList = getEmployees();
您可以轻松地替换getEmployees()
的实现以返回特定类型的 Set。
https://en.wikipedia.org/wiki/SOLID
如何考虑子类型的多态性