大师我悟了! 认真学习 C++ 之后, 我发现了 JVM 方法 invokevirtual, invokespecial, invokestatic 指令的本质!
invokevirtual -> {
在 Java 中表现为非 final(private)实例方法;
在 C++ 中表现为 virtual 方法;
其实就是沿着虚表调用的 virtual 虚方法, 属于运行时才去寻找, 绑定;
}
invokespecial -> {
在 Java 中表现为构造方法, final(private) 方法等非 static 却也可以在编译器绑定的方法;
在 C++ 中表现为非 static 也非 virtual 方法;
其绑定方式属于编译期间绑定, 但是却同虚方法一样可以访问实例的实例成员字段, 方法;
}
invokestatic -> {
在 Java 和 C++ 中都表现为 static 方法;
其就是调用属于类的类方法;
}