多态的四种布控形式

本文介绍了多态的概念,包括参数多态、包含多态、过载多态和强制多态等不同形式,并解释了它们在程序设计语言中的应用。

多态,不同的对象收到同一消息可以产生不同的结果,这种现象叫做多态。

多态的布控形式:参数多态,包含多态,过载多态,强制多态。其中前两者称为通用多态,后两者称为特定多态。

强制多态(coercion)

编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。 程序设计语言中基本类型的大多数操作符,在发生不同类型的数据进行混合运算时,

编译程序一般都会进行强制多态。 程序员也可以显示地进行强制多态的操作(Casting)。

要注意的是并不是任意两个类型之间都可以进行强制多态。在不同类型之间实现强制多态,通常需要执行不同的转换操作。强制多态的原则是:将值集较小(即占用 存储空间较小)的类型,变换成值集包含了前者(即占用存储空间较大)的类型,反之,应当注意可能发生的对值的损伤(特别是在使用Casting时)。

过载(overloading)多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。程序设计语言中基本类型的大多数操作符都是过载多态的。通俗的讲法,就是c++中的函数重载。在此处中“overload”译为“过载”,其实就是所谓的“重载”,也许“overload”就应翻译为“过载,重载”吧,那“override”就只能是“覆盖”了。

 

包含多态(inclusion)
同样的操作可用于一个类型及其子类型。(注意是子类型,不是子类。)包含多态一般需要进行运行时的类型检查。如Pascal中的子界。
几点需要注意的地方:
1.包含多态的操作存在着逆单调(Anti-mornotonic)。即一个类型t上的操作,当其定义域缩小成t的一个子类型时,其值域应不小于t.
 
参数多态(parametric)
采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值