gpt4 book ai didi

java - Java中的方法覆盖

转载 作者:搜寻专家 更新时间:2023-11-01 01:15:10 25 4
gpt4 key购买 nike

Java 中的方法重写是如何实现的?在 C++ 中,我们有 vtable 的概念。这在 Java 中是如何在内部实现的?

最佳答案

要回答这个问题,特别是如何在虚拟机中实现覆盖,Programming for the Java Virtual Machine 中有一篇文章可用。 (Google 图书链接)。

VM 将在引用的类中寻找适当的方法定义,然后在继承堆栈中向上查找。显然,在某个阶段将应用各种优化。

参见 here相关字节码指令的描述 invokevirtual:

invokevirtual looks at the descriptor given in , and determines how many arguments the method takes (this may be zero). It pops these arguments off the operand stack. Next it pops objectref off the stack. objectref is a reference to the object whose method is being called. invokevirtual retrieves the Java class for objectref, and searches the list of methods defined by that class and then its superclasses, looking for a method called methodname, whose descriptor is descriptor.

正如 gustafc 在下面强调的那样,可以应用各种优化,毫无疑问 JIT 将进一步引入。

关于java - Java中的方法覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1543191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com