我知道在调用函数时,所有对象都是在运行时创建的。
绑定是指我们在类中绑定方法数据成员。
早期绑定在编译时绑定所有方法实例变量。我认为所有对象都是在运行时创建的,因此它必须在运行时绑定所有方法数据成员。
为什么在早期绑定对对象方法的调用是在编译时确定的?如果该对象是在运行时创建的。
例如。
class A{
public void foo(){
//some code here
}
}
public static void main(String[] args){
A aInstance = new A();
aInstance.foo();
}
foo()在编译时解析,但是在运行时确定了aInstance。
答案 0 :(得分:0)
这是因为绑定调用意味着确定要调用的方法(或函数),而不是确定要调用它的实例。
早期绑定是首选,因为然后调用执行得稍快。
延迟绑定到运行时的唯一原因可能是多态,即使在编译类型中未知对象的确切类型;或者一个简单的编译器实现,它不关心VMT查找的成本。