【发布时间】:2016-09-08 12:16:44
【问题描述】:
根据我对 C++ 多态性的了解(如果我错了,请纠正我)
对于 C++ 中的运行时多态性,编译器维护两件事,首先是每个对象的 vptr 和每个类的 vtable。每当我们调用一个被覆盖的方法时,编译器首先会获取被引用对象的vptr,然后它会去对应类的vtable,然后获取相应方法的地址并执行。
现在我的问题是,
JVM如何执行这个任务??
它还维护一个 vtable 吗?
一个被覆盖和覆盖的方法是如何存储在方法区的??
当我们通过使用引用子类对象的超类引用从子类调用覆盖方法时,幕后实际发生了什么?
【问题讨论】:
-
我相信这将取决于实现。
-
@OliverCharlesworth,请您通过考虑任何适当的实现来解释一下吗??
标签: java polymorphism