动态分派 在计算机科学中动态分派Dynamic dispatch是指运行时选择哪一个多态的实现具體的方法或函数来调用的过程动态分派通常被应用于面向对象编程OOP的语言和系统并被认为是一个主要特点 面向对象的系统把一个问题看作是一系列通过名字引用来制定操作的相互影响的物体多态性是指一些可互换的物体虽有相同名字但却在行为上不同的现象例如一个文件对象和一个数据库对象都有一个储存记录的方法来记录需要存储的的个人记录但是二者的实现却不同一个程序可以有对文件或数据库的访问当一个程序调用对象的存储记录时有一些东西需要来决定采取哪种行为如果有人认为OOP仅仅指给对象发送信息那么在这个例子中程序仅仅把一条存储记录信息发送给了一个未知类型的对象而把如何将这条信息发送给正确对象交给运行支持系统来处理这个对象来决定它执行哪些行为 与动态分派成对比的是静态分派在静态分派中对一个多态操作的实现是在编译时间就选择好的动态分派的目的在于支持那些当在编译时间内无法决定一个多态操作的合适的实现因为这个决定取决于这个操作的一个或多个实际参数的运行类型的情形 动态分派和动态绑定不同在选择操作的上下文中绑定把名称和操作相关联而分派则在确定名称所引用的操作之后选择操作的实现通过使用动态分派名称可以在编译时被绑定到多态操纵中但是直到运行时才执行该实现虽然动态分派不暗示后期绑定但后期绑定意味着动态分派因为绑定决定了什么可以分派