[@饭娱咖啡][¥20]如何理解方法调用时单分派和多分派-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

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

小可爱清 2018-11-13 10:21:55 788

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

Java
分享到
取消 提交回答
全部回答(1)
  • hiekay
    2019-07-17 23:13:48

    1 . 静态分派:

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

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

    0 0

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题