C++(谭浩强)笔记(第11章).pdfVIP

  • 7
  • 0
  • 约5.97千字
  • 约 10页
  • 2017-08-18 发布于浙江
  • 举报
C(谭浩强)笔记(第11章)

继承与派生 在面向对象基础中了解了面向对象程序设计的两个重要特征——抽象和封 装。但是面向对象程序设计主要有4 个特点:抽象、封装、继承和多态,要较好 地进行面向对象的程序设计还必须了解继承和多态。继承性是面向对象程序设计 最重要的特征,面向对象强调软件的可重用性。C++语言提供了类的继承机制, 解决了软件重用问题。 一个类中包含了若干个数据成员和成员函数。在不同类中,数据成员和函数 成员是不同的。但有时两个类的内容基本相同或有一部分相同,例如声明了学生 类Student 和人类Person,具体声明如图1 所示: 图1:Student 类和Person 类的声明 显然,这两个类中有很大一部分内容基本相同,于是我们可以利用原来声明 的Person 类作为基础,在加上新内容,以减少重复的工作量,这就是继承。 一、继承与派生的概念 在C++ 中所谓继承就是在一个已存在的类的基础上建立一个新的类。已存在 的类称为基类或父类(base class or father class),新建立的类称为派生类 或子类(derived class or son class)。 一个新类从已有的类那里获得其已有特性的现象称为类的继承。通过继承, 一个新建子类从父类那里获得父类的特性。换个角度说,从已有类产生一个新的 子类称为类的派生。类的继承是利用已有的类来建立专用类的编程技术。 派生类继承了基类的所有数据成员和函数成员(不包括构造函数和析构函 数),并对成员做必要的增加或调整。一个基类可以派生出多个派生类。每一个 派生类又可以继续派生出新的派生类,这样派生下去就形成了类的继承层次结构。 图1 中的例子是最简单的情况,一个派生类只从一个基类派生,这种继承称 为单继承(singleinheritance)。一个派生类有两个基类或者多个基类,这种继 承称为多重继承(multiple inheritance)。 图2:单继承(single inheritance) 和多重继承(multiple inheritance) 二、派生类的声明方式 图1 中声明的两个类之间显然可以建立继承关系,最简单的继承方式如图3 所示: 图3:派生类Student 类的声明方式 声明派生类的一般形式为 class 派生类名:[继承方式] 基类名 { 派生类新增成员; };其中继承方式包括 public,private,protected,继承方式可选,如果 不写默认为private。 三、派生类的继承方式 1、公用继承(public inheritance) 在定义一个派生类时将基类的继承方式指定为public 的称为公用继承,用 公用继承方式建立的派生类称为公用派生类(public derived class),其基类称 为公用基类(public base class)。 采用公用继承方式时,基类的公用成员和保护成员在派生类中仍然保持其公 用成员和保护成员的属性,基类的私有成员在派生类中并没有成为派生类的私有 成员,仍然是基类的私有成员,只有基类的成员函数可以访问它。因此,公用基 类的私有成员就成为派生类中的不可访问的成员,如图4 所示。 图4:公用基类中的私有成员不能在派生类中被访问 2、私有继承(private inheritance) 在生命一个派生类时将基类的继承方式指定为private 的,称为私有继承, 用私有继承方式建立的派生类称为私有派生类(private derived class),其基 类称为私有基类(privated base class)。私有基类的公用成员和保护成员在派 生类中的访问属性相当于派生类中的私有成员,即只有派生类的成员函数能够访 问它们,而派生类外不能访问。对于不需要在往下继承的类的功能可以用私有继 承方式将它隐蔽起来,这样,下一层的派生类无法访问它的任何成员。私有基 类的私有成员在在派生类中成为不可访问成员,如图5 所示。 图5:私有继承方式中派生类不能访问基类中的任何成员 3、保护成员和保护继承(protected inheritance) 由protected 声明的成员称为 “受保护的成员”或简称“保护乘员”。受保 护的成员不能在类

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档