Java分派

单分派和多分派

变量被声明时的类型叫做变量的静态类型(Static Type),变量所引用的对象的真实类型又叫做变量的实际类型(Actual Type)。

静态分派(StaticDispatch)发生在编译时期,分派根据静态类型信息发生。方法重载(Overloading)就是静态分派。

动态分派(DynamicDispatch)发生在运行时期,动态分派动态的置换掉某个方法。动态分派实现方法置换产生的多态性。

分派的类型

一个方法所属的对象叫做方法的接收者,方法的接收者和方法的参量(方法名、方法的参数签名(包括参数类型、参数个数、参数顺序))

统称为方法的宗量。

根据方法可以基于多少种宗量,可以将面向对象语言划分为单分派(Uni-Dispatch)和多分派(Multi-Dispatch)语言。单分派语言根据一个

宗量的类型进行对方法的选择。多分派语言根据多于一个宗量类型对方法进行选择。

在一个支持动态单分派的语言里,有两个条件决定了一个请求会调用哪一个操作,一是请求的名字,二是接收者的真实类型。单分派限制了方

法的选择过程,使得只有一个宗量可以被考虑,这个宗量通常就是方法的接收者。在Java语言中,如果一个操作时作用于某个类型不明的对象上面

的,那么对这个对象的真实类型测试仅会发生一次,这就是动态单分派的特性。

所以java支持静态的多分派和动态的单分派。

福报够的人,从来就没听到过是非。

Java分派

相关文章:

你感兴趣的文章:

标签云: