我学习了很多关于C++如何在存在继承(多重,虚拟等)的情况下管理其虚拟表以及它如何在内存中放置对象的方法。Java方法表
现在,Java只需要担心单行继承,没有实例方法隐藏等,所以在这种情况下虚拟表应该更简单一些。我知道Class
文件充当方法区域的“网关”,其中存储了类型定义,包括方法字节码I推测。我想到以下两个问题:
- Java中有没有任何vtable/method表结构?它如何存储并链接到
Class
对象? - 继承/动态方法调用如何解决?我的意思是:
具有以下类和实例:B中
class A{ int f(){...} }
class B extends A{ int f(){...} }
A a = new B();
a.f();
F()被调用。 B通过Class
文件解析正确的方法指针?
非常感谢您的意见。
当然。我认为解决方案在运行时会使用B的'Class'文件并从那里加载方法,这就是为什么B.f()被调用 – Bober02 2012-04-19 10:34:35