我学到了很多关于 C++ 如何在存在继承(多重、虚拟等)的情况下管理其虚拟表以及它如何将对象放置在内存中。
现在,Java 只需要担心单行继承,没有实例方法隐藏等,因此在这种情况下虚拟表应该更简单一些。我知道Class
文件充当方法区域的“网关”,其中存储类型定义,包括我认为的方法字节码。我想到以下两个问题:
- Java中是否有任何vtable/method表结构?它是如何存储和链接到
Class
对象的? - 继承/动态方法调用如何解决?我的意思是:
具有以下类和实例:
class A{ int f(){...} }
class B extends A{ int f(){...} }
A a = new B();
a.f();
调用 B 中的 f()。A 通过 B 的文件解析Class
正确的方法指针吗?
非常感谢您的评论。