大师我悟了! 认真学习 C++ 之后, 我发现了 JVM 方法 invokevirtual, invokespecial, invokestatic 指令的本质!

invokevirtual -> {
    在 Java 中表现为非 final(private)实例方法;
    在 C++ 中表现为 virtual 方法;
    其实就是沿着虚表调用的 virtual 虚方法, 属于运行时才去寻找, 绑定;
}


invokespecial -> {
    在 Java 中表现为构造方法, final(private) 方法等非 static 却也可以在编译器绑定的方法;
    在 C++ 中表现为非 static 也非 virtual 方法;
    其绑定方式属于编译期间绑定, 但是却同虚方法一样可以访问实例的实例成员字段, 方法;
}

invokestatic -> { 
    在 Java 和 C++ 中都表现为 static 方法;
    其就是调用属于类的类方法;
}
posted @ 2021-11-15 21:17  throw_new_NullPointe  阅读(53)  评论(0编辑  收藏  举报