静态分派&动态分派

Posted 背时的哥哥

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态分派&动态分派相关的知识,希望对你有一定的参考价值。

1.静态分派

所有依赖静态类型来决定执行版本的分派动作称为静态分派。静态分派的最典型应用表现就是方法重载。静态分派发生在编译阶段,因此静态分派的动作实际上不是由虚拟机来执行的;

2.动态分派

父类使用多态调用子类重写方法时,会执行invokevirtual指令。该指令执行的第一步就是在运行期确定接收者的实际类型,所以该指令并不是把常量池中方法的符号引用解析到直接引用上就结束了,还会根据方法接收者的实际类型来选择方法版本,这个过程就是Java语言中方法重写的本质。
*既然这种多态性的根源在于虚方法指令invokevirtual的执行逻辑,那么其就只会对方法有效,对字段是无效的;

以上是关于静态分派&动态分派的主要内容,如果未能解决你的问题,请参考以下文章

静态分派&动态分派

64.多态性实现机制—静态分派与动态分派(方法解析静态分派动态分派单分派和多分派)

(三十)分派调用:静态分派和动态分派

浅谈动态分派和静态分派

Java静态分派和动态分派

JVM 方法调用之静态分派