|
|
�例如,图6.12给出了
4 个类的继承层次。使用这个继承结构,发送给多边形类的所有消息,它的所有子类都能够响应。又例如,想要在屏幕上画一系列多边形,多态性允许一个表的元素可以属于一组指定的类型而不仅仅是一个类型,可以认为这是一个类族。通过遍历这个表,发送给各个表元素以draw消息,画出所有的多边形。 |
|
图6.12 4个类的继承层次
|
��动态绑定把函数调用与目标代码块的连接延迟到运行时进行。这样,只有发送消息时才与接收消息实例的一个操作绑定。它与多态性可以使我们建立的系统更灵活,易于扩充。做为动态绑定的例子,考虑在多边形类中的方法contains?
(aPoint)。这个操作可以在类层次的各层重新实现,以有效利用各个子类的特殊的特征。例如,假定一个矩形有某些边与屏幕的边平行,这时,检查一个点是否包含在矩形内,比检查一个点是否在一个一般的四边形内的效率要高一些。
��多态性技术主要在结构方面给设计者提供了灵活性,这种结构在子程序参数的类型检验中是很灵活的。在具有多态性的语言中,经常对照形式参数检查实际参数。然而,代替在形式参数与实际参数之间做精确匹配,实际参数可能是属于一个特定集合的任何几个类型的一个实例。在一个面向对象的多态性语言中,可能代替一个特定类型的类型的集合就是它的子类集合。
�� |
|