java 方法分派笔记

来源:互联网 发布:近年物流业发展数据 编辑:程序博客网 时间:2024/06/15 20:36

Java语言支持三种多态,虚方法可以通过覆写(override)的方式来实现子类型多态(subtype polymorphism),通过方法重载支持的ad-hoc多态(ad-hoc polymorphism)与通过泛型支持的参数化多态(parametric polymorphism)。在面向对象编程的语境里“多态”一般指子类型多态。

Java语言中非虚方法可以通过“静态绑定”(static binding)或者叫“早绑定”(early binding)来选择实际的调用目标——因为无法覆写,无法产生多态的效果,于是可能的调用目标总是固定的一个。

虚方法则一般需要等到运行时根据“接收者”的具体类型来选择到底要调用哪个版本的方法,这个过程称为“运行时绑定”(runtime binding)或者叫“迟绑定”(late-binding)。虚方法也可以进行静态绑定。


静态方法,声明为final或者private的实例方法是非虚方法。其它实例方法都是虚方法。


在编译阶段,jvm在选择哪个方法的时候有两点依据:一是调用者的静态类型是Fatcher还是Son.二是方法参数的QQ还是360。静态多分派。静态指静态编译时

在运行时,分派的标准只有该方法的调用者一个依据。不会再看参数类型。即动态单分派

0 0