4

我知道所有对象都是在调用函数时在运行时创建的。

绑定是我们在类中绑定方法数据成员。

早期绑定是在编译时绑定所有方法实例变量。我认为所有对象都是在运行时创建的,所以它必须在运行时绑定所有方法数据成员。

为什么在早期绑定中对对象方法的调用是在编译时确定的?如果该对象是在运行时创建的。

例如。

class A{
    public void foo(){
        //some code here
    }
}

public static void main(String[] args){
    A aInstance = new A();
    aInstance.foo();
}

foo() 是在编译时解析的,但 aInstance 是在运行时确定的。

4

1 回答 1

0

This is because to bind the call means to determine the method (or function) to be called, not to determine the instance to call it on.

Early binding is preferable, because the call then executes slightly faster.

The only reason to delay the binding to the runtime might be polymorphism, where even the exact type of the object is unknown at compile type; or a simple compiler implementation that does not care about the cost of the VMT lookup.

于 2012-05-15T07:27:11.817 回答