6.1 继承的概念

6.1 继承的概念

继承(inheritance)是面向对象程序设计的又一重要特性。继承体现了类与类之间的一种特殊关系,即一般与特殊的关系。类之间的继承关系是现实世界中遗传关系的直接模拟,它表示类之间的内在联系以及对属性和操作的共享,即子类可以沿用父类(被继承类)的某些特征。当然,子类也可以具有自己独立的属性和操作。它是通过继承原有类的基础,派生出新类,进而开发出更为复杂的数据类型。新开发的对象既有新定义的行为特征,又包含有原有类定义的行为特征。继承就是一个新类拥有全部被继承类的成员变量和方法。继承机制使得新类不仅有自己特有的成员变量和方法,而且有被继承类的全部成员变量和方法。通过继承,可以从已有类模块产生新的类模块,从而使两个类模块之间发生联系。通过继承产生的新的类模块不仅重用了被继承类的模块资源,而且使两个类模块之间的联系方式和人类认识客观事物的方式一致。

面向对象程序设计的继承性使得大型应用程序的维护和设计变得更加简单。一方面,大型应用程序设计完成并交互使用后,常常面临用户的需求发生变化,程序功能需要扩充等问题。这时,程序的修改需要十分小心,因为某个局部的修改可能会影响其他部分,而一个正在使用中的系统需要进行全面的测试,既浪费时间,又有许多实际困难。另一方面,一个新的应用系统程序设计问题,在许多方面会和以前设计过的某个或某些系统的模块非常类似,怎样加快大型应用程序的开发速度,重用这些已经开发成功的程序模块,一直是软件设计中迫切需要解决的问题。

继承机制可以很好地解决上述两方面问题。面向对象程序设计的继承机制提供了一种重复利用原有程序模块资源的途径。通过新类对原有类的继承,既可以扩充旧的程序模块功能以适应新的用户需求,也可以满足新的应用系统的功能需求。因此,不仅可以大大方便原有系统的功能扩充,而且可以大大加快新系统的开发速度。另外,用这种软件设计方法设计的新系统较用传统的软件方法设计的新系统,需要进行的测试工作也少很多。

继承性是软件复用的一种形式,也是自动地实现类中方法和数据共享的机制。如果没有继承机制,则一个系统中的类是封闭的、相互无关的,多个类实现相似的功能势必造成数据和方法的大量重复。而有了继承机制,多个类就可相互关联,新类由已存在的类生成,通过保留它们的属性和行为,并且根据新类的要求对性能加以修改,添加新的属性和行为。软件重用可缩短软件开发时间,重用那些已被证实和经过调试的高质量软件,可以提高系统性能,减少系统在使用过程中出现的问题。