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