JVM中,类加载过程链接阶段的解析步骤包含将符号引用转换为调用方法的直接引用过程,该过程与方法的绑定机制有关,这节记录下Java方法调用的一些细节。
方法绑定机制
在聊方法绑定机制之前,我们需要先知道什么是静态链接和动态链接。
- 静态链接:类加载过程中,如果被调用的目标方法在编译期就可以唯一确定,运行期间不会发生改变,这种情况下将调用方法的符号引用转换为直接引用的过程称之为静态链接。
- 动态链接:和静态链接相反,如果被调用的目标方法在编译期无法确定下来,只能够在运行期间将调用方法的符号引用转换为直接引用,这种情况被称为动态链接。
静态链接和动态链接对应的方法绑定机制分别为早期绑定和晚期绑定。绑定是一个字段、方法或者类在符号引用被替换为直接引用的过程,仅仅发生一次。
举个例子,新建Test类:
public class Test {
public void showBrand(Car car) {
car.brand();
}
public void showPower(Engine engine) {
engine.power();
}
}
interface Car {
void brand();
}
class Engine {
void power() {
System.out.println("0马力");
}
}
class BMW extends Engine implements Car {
@Override
public vo