java - 为什么需要动态绑定?
问题描述
我无法弄清楚为什么我们需要动态绑定(后期绑定)。假设我们有 A 类和 B 类,假设 B 类扩展了 A 类,现在我们可以编写诸如“A var= new B();”之类的东西 现在假设两个类都包含具有相同签名的方法,例如方法“cry()”现在我可以编写类似“var.cry()”的东西,现在仅基于“var”的类型编译器无法绑定权利编译期间实例“var”的方法,但编译器必须检查以下语句是否合法“A var= new B();” 现在,因为它必须检查该语句是否合法,它必须知道“var”将引用类 B 的实例,现在如果它知道这一点,编译器必须能够在编译时绑定正确的方法?
解决方案
假设你有
void foo(A someA) {
someA.cry()
}
现在怎么办?没有人能提前告诉你传入的 A 是 A 还是 B!
换句话说,有很多方法不能在编译时可靠地知道某个对象的确切性质!
推荐阅读
- python - 我可以使用 pandas to_sql 方法添加约束吗?
- android - Chrome 远程调试控制台不适用于 Android 4.4.4
- sql - 如何将 MS SQL STUFF 与子选择一起使用?
- javascript - 如何确保属性的对象属性存在简单?
- autodesk-forge - 如何从 BIM BCF 主题视点正确初始化 Autodesk Forge 3D 查看器?
- c - 将整数向量转换为 0 到 1 之间的浮点数的最快精确方法
- json - JsonPath 获取除第一个之外的所有子元素
- c++ - 当用户更改 Windows 日期/时间格式(C++、Windows 本机应用程序)时如何防止应用程序的区域设置更改
- django - 如何将上传的文件存储在具有 django 模型字段名称的文件夹中?
- java - 禁用 mySQL RDS 客户端身份验证