UML基础与Rose建模实用教程(第三版)
上QQ阅读APP看书,第一时间看更新

1.2.3 继承

对于客观事物的认知,既应当看到其共性,也应该看到其特性。如果只考虑事物的共性,不考虑事物的特性,就不能反映出客观世界中事物之间的层次关系,从而不能完整地、正确地对客观世界进行抽象地描述。如果说运用抽象的原则就是舍弃对象的特性,提取其共性,从而得到适合一个对象集合的类的话,那么在这个类的基础上,再重新考虑抽象过程中被舍弃的那一部分对象的特性,则可以形成一个新的类,这个类具有前一个类的全部特征,是前一个类的子集,从而形成一种层次结构,即继承结构。以学生为例,可以分为小学生、中学生、大学生、研究生等,通过抽象得到一个学生类以后,可以通过继承的方式分别得到小学生、中学生、大学生、研究生等类,并且这些类包含学生的特性,图1-2展示了这样一个继承的结构。

继承(Inheritance)是一种连接类与类之间的层次模型。继承是指特殊类的对象拥有其一般类的属性和行为。继承意味着“自动地拥有”,即在特殊类中不必对已经在一般类中所定义过的属性和行为重新进行定义,而是特殊类自动地、隐含地拥有其一般类的属性和行为。继承对类的重用性,提供了一种明确表述共性的方法,即一个特殊类既有自己定义的属性和行为,又有从一般类继承下来的属性和行为。尽管继承下来的属性和行为在特殊类中是隐式的,但无论在概念上还是实际效果上,都是这个类的属性和行为。继承是传递的,当这个特殊类被它更下层的特殊类继承的时候,它继承来的和自己定义的属性和行为又被下一层的特殊类继承下去。有时把一般类称为基类(Base Class),把特殊类称为派生类(Derived Class)。

图1-2 学生类继承结构示例

继承在面向对象软件的开发过程中,有其强有力和独特的一面,通过继承可以达到以下目的。

  • 使派生类能够比不使用派生方式(就是继承方式)进行描述的类更加简洁。
  • 能够重用和扩展现有类库的资源。
  • 使软件易于维护和修改。

在软件开发过程中,继承性实现了软件模块的可重用性、独立性,缩短了开发周期,提高了软件的开发效率,同时使软件易于维护和修改。继承是对客观世界的直接反映,通过类的继承,能够实现对问题的深入抽象描述,也反映出人类认知问题的发展过程。