java 方法分派笔记

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。静态多分派。静态指静态编译时

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值