开发者社区> 问答> 正文

[@饭娱咖啡][¥20]如何理解方法调用时单分派和多分派

1静态分派动态分派的最主要区别
2如何区分单分派和多分派
3如何理解java是基于静态多分派和动态单分派。
注:23需要举例说明,请不要用《深入java虚拟机。。。》那个栗子说明看不懂

展开
收起
小可爱清 2018-11-13 10:21:55 2240 0
1 条回答
写回答
取消 提交回答
  • java 数据分析 数据可视化 大数据

    1 . 静态分派:

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

    动态分派  
       动态分派与多态性的另一个重要体现——方法覆写有着很紧密的关系。向上转型后调用子类覆写的方法便是一个很好地说明动态分派的例子。这种情况很常见,因此这里不再用示例程序进行分析。很显然,在判断执行父类中的方法还是子类中覆盖的方法时,如果用静态类型来判断,那么无论怎么进行向上转型,都只会调用父类中的方法,但实际情况是,根据对父类实例化的子类的不同,调用的是不同子类中覆写的方法,很明显,这里是要根据变量的实际类型来分派方法的执行版本的。而实际类型的确定需要在程序运行时才能确定下来,这种在运行期根据实际类型确定方法执行版本的分派过程称为动态分派。

    2019-07-17 23:13:48
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JAVA反射原理以及一些常见的应用 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载