invokevirtual什么意思 Java中super存储的是一个父类的内存地址吗?

Java中super存储的是一个父类的内存地址吗?谢谢。首先,它不是。只是搜索方法不同。不使用多态性。现在是讨论内存地址的时候了,让我们详细解释一下具体的原理。Java中所有的非静态、非构造函数和非私

Java中super存储的是一个父类的内存地址吗?

谢谢。

首先,它不是。只是搜索方法不同。不使用多态性。

现在是讨论内存地址的时候了,让我们详细解释一下具体的原理。Java中所有的非静态、非构造函数和非私有方法都是虚方法,虚方法的调用将根据具体的接收者来决定调用哪个方法。Java调用一个方法。如果在方法中使用super,本质上,它将忽略虚拟方法的多态搜索特性(使用invokevirtual进行动态绑定),而使用invokespecial。区别在于invokespecial的用法。粗略地说,它可以指定要调用哪个方法(ACC实际存在) Super flag将影响此指令的行为),但它仍然是通过使用调用方法时默认传入的此变量的引用来调用的。