是的,编译器和运行时对虚拟方法的处理方式有所不同。JVM专门利用虚拟方法表进行虚拟方法分配:
对象的调度表将包含对象的动态绑定方法的地址。通过从对象的分派表中获取方法的地址来执行方法调用。属于同一类的所有对象的分发表都是相同的,因此通常在它们之间共享。属于类型兼容类的对象(例如,继承层次结构中的同级对象)将具有具有相同布局的调度表:对于所有类型兼容类,给定方法的地址将以相同的偏移量出现。因此,从给定的分配表偏移量中获取方法的地址将获得与对象的实际类相对应的方法。

是的,编译器和运行时对虚拟方法的处理方式有所不同。JVM专门利用虚拟方法表进行虚拟方法分配:
对象的调度表将包含对象的动态绑定方法的地址。通过从对象的分派表中获取方法的地址来执行方法调用。属于同一类的所有对象的分发表都是相同的,因此通常在它们之间共享。属于类型兼容类的对象(例如,继承层次结构中的同级对象)将具有具有相同布局的调度表:对于所有类型兼容类,给定方法的地址将以相同的偏移量出现。因此,从给定的分配表偏移量中获取方法的地址将获得与对象的实际类相对应的方法。