1.静态连接与非虚方法
2.动态连接与虚方法
分派描述的是方法版本确定的过程
方法重载 静态分派
方法重写 动态分派
举个例子
- 动态分派能够让我们从语言层面正确辨析重写(多态),我觉得它是Java语义上多态的实现
- invokevirtual指令则是对动态分派这个概念在JVM层面上功能的具体实现,即在JVM中是用怎样一种逻辑实现了动态分派。明白了这个指令,感觉也就体现了多态实现代码中的实现逻辑
- 虚方法表则是支撑着invokevirtual指令的实现,我们知道invokevirtual指令代表了递归查找当前栈帧操作数栈顶上引用所代表的实际类型的过程,而虚方法表的实现就是让invokevirtual指令有地方可查