多态,不同的对象收到同一消息可以产生不同的结果,这种现象叫做多态。
多态的布控形式:参数多态,包含多态,过载多态,强制多态。其中前两者称为通用多态,后两者称为特定多态。
强制多态(coercion)
要注意的是并不是任意两个类型之间都可以进行强制多态。在不同类型之间实现强制多态,通常需要执行不同的转换操作。强制多态的原则是:将值集较小(即占用
存储空间较小)的类型,变换成值集包含了前者(即占用存储空间较大)的类型,反之,应当注意可能发生的对值的损伤(特别是在使用Casting时)。
过载(overloading)多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。程序设计语言中基本类型的大多数操作符都是过载多态的。通俗的讲法,就是c++中的函数重载。在此处中“overload”译为“过载”,其实就是所谓的“重载”,也许“overload”就应翻译为“过载,重载”吧,那“override”就只能是“覆盖”了。
包含多态(inclusion)
同样的操作可用于一个类型及其子类型。(注意是子类型,不是子类。)包含多态一般需要进行运行时的类型检查。如Pascal中的子界。
几点需要注意的地方:
1.包含多态的操作存在着逆单调(Anti-mornotonic)。即一个类型t上的操作,当其定义域缩小成t的一个子类型时,其值域应不小于t.
参数多态(parametric)
采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。
本文介绍了多态的概念,包括参数多态、包含多态、过载多态和强制多态等不同形式,并解释了它们在程序设计语言中的应用。
1404

被折叠的 条评论
为什么被折叠?



