通用多态
在面向对象的多态性中:
通用多态包含了参数多态和包含多态两种多态
参数多态(parametric)
采用参数化模板,通过给出不同的类型参数,使得一个结构有多种类型。
两个packages的:
·应用内涵一致:提供的都是堆栈抽象操作。
·实现结构相似:采用同类数据结构,实现代码相同。
·元素的类型不同,一些用常量表示的细节不同。
对比:函数是相似的语句序列的一种涵义明确的抽象,用函数中的语句表示相同的部分,用形参指明不同的部分,用实参体现不同的部分。但是,函数的参数只能是数据,不能是类型。
类属在一个抽象结构中允许以参量形式来表示可变的类型﹑函数﹑常数﹑数据值,在编译时(静态)进行实例化,结果是一个具体的结构(类型﹑函数等)。而且类型的实例化可以静态进行,也可以动态进行,但结果都是一个值。
包含多态(inclusion)
同样的操作可用于一个类型及其子类型。(注意是子类型,不是子类。)包含多态一般需要进行运行时的类型检查。如Pascal中的子界。
几点需要注意的地方:
1.包含多态的操作存在着逆单调(Anti-mornotonic)。即一个类型t上的操作,当其定义域缩小成t的一个子类型时,其值域应不小于t.