6.1.2 多态性
面向对象的编程语言必须支持多态性,多态性的意思是指不同的类对同一操作可以有不同的行为。例如,如果定义了一个“汽车”类和一个“自行车”类,二者可以具有不同的“移动”操作。对于现实世界的对象,这并不是一个问题。我们不可能将自行车的移动与汽车的移动相混淆。然而,编程语言并不能处理现实世界的这种基本常识,因此语言必须支持多态性,从而可以知道将哪个移动操作应用于一个特定的对象。
多态性与其说是对象的特性,不如说是行为的特性。在PHP中,只有类的成员函数可以是多态的。这可与现实世界的自然语言的动词做比较,后者相当于成员函数。可以想像一下生活中我们是如何使用自行车的。我们可以清洗、移动、拆解、修理和刷油漆等。
这些动词只描述了普遍行为,因为我们不知道这些行为应该作用于哪种对象(这种对对象和行为的抽象是人类智慧的一个典型特征)。
例如,尽管自行车的“移动”和汽车的“移动”在概念上是相似的,但是移动一辆自行车和移动一辆汽车所包含的行为是完全不同的。一旦行为作用的对象确定下来,动词“移动”就可以和一系列特定的行为联系起来。