▶5.6.1 继承与派生类的概念

▶5.6.1 继承与派生类的概念

很多时候,程序员在进行面向对象编程时,会发现有些类和其他类间具有相同的特征,同时又有差别或新增部分的特征,而且这些类间具有层次结构,于是,可以把类间的相同部分进行共享,而在新类中添加不同部分,这就是继承。继承性是面向对象程序设计的一个重要特性,通过继承实现了数据抽象基础上的代码重用。[4]

继承能够减少代码冗余,通过协调性来减少相互之间的接口和界面。为了减少程序员的编程量,增加代码的共享度,在定义新的类时,这些重复的内容就可以不用定义,从已存在的类中共享这些内容即可,这就是继承。

继承性反映了类的层次结构,并支持对事物从一般到特殊的描述。继承性使程序员可以以一个已有的较一般的类为基础建立一个新类,而不必从零开始设计。建立一个新的类,既可以从一个或多个先前定义的类中继承数据成员和成员函数,而且可以重新定义或加进新的数据成员和成员函数,从而建立类的层次关系。这个新类称为派生类或子类,而已存在的类称为基类或父类。派生类继承基类,基类派生子类,这就是继承和派生。图5-2为继承关系示意图。

图5-2 继承关系示意图

图5-2中,研究生和本科生为大学生的派生类,大学生为研究生和本科生的基类。研究生又可以派生出硕士研究生和博士研究生。所以基类和派生类的概念也是相对的。

在派生新类时,可以增加新的数据成员,可以增加新的成员函数,可以重新定义基类中已有的成员函数,还可以改变现有成员的访问属性。