C++程序设计 湖南大学 杜四春、银红霞 第11章继承和派生类 11.1基类和派生类 112单继承 11,3多继承 114虚基类 11.5应用实例
C++程序设计 湖南大学 杜四春、银红霞 第11章 继承和派生类 11.1 基类和派生类 11.2 单继承 11.3 多继承 11.4 虚基类 11.5 应用实例
C++程序设计 湖南大学 杜四春、银红霞 继承是面向对象程序设计的基本特征之 是从已有的类基础上建立新类。继承性是面向 对象程序设计支持代码重用的重要机制。面向 对象程序设计的继承机制提供了无限重复利用 程序资源的一种途径。通过C++语言中的继承 机制,一个新类既可以共享另一个类的操作和 数据,也可以在新类中定义已有类中没有的成 员,这样就能大大的节省程序开发的时间和资 源
C++程序设计 湖南大学 杜四春、银红霞 继承是面向对象程序设计的基本特征之一, 是从已有的类基础上建立新类。继承性是面向 对象程序设计支持代码重用的重要机制。面向 对象程序设计的继承机制提供了无限重复利用 程序资源的一种途径。通过C++语言中的继承 机制,一个新类既可以共享另一个类的操作和 数据,也可以在新类中定义已有类中没有的成 员,这样就能大大的节省程序开发的时间和资 源
C++程序设计 湖南大学 杜四春、银红霞 11.1基类和派生类 继承是类之间定义的一种重要关系。定义类B时, 自动得到类A的操作和数据属性,使得程序员只需定义 类A中所没有的新成分就可完成在类B的定义,这样称 类B继承了类A,类A派生了类B,A是基类(父类),B 是派生类(子类)。这种机制称为继承。 称已存在的用来派生新类的类为基类,又称为父 类。由已存在的类派生出的新类称为派生类,又称为 子类。派生类可以具有基类的特性,共享基类的成员 函数,使用基类的数据成员,还可以定义自己的新特 性,定义自己的数据成员和成员函数。 在C++语言中,一个派生类可以从一个基类派生, 也可以从多个基类派生。从一个基类派生的继承称为 单继承;从多个基类派生的继承称为多继承。图11-1 反映了类之间继承和派生关系
C++程序设计 湖南大学 杜四春、银红霞 11.1 基类和派生类 继承是类之间定义的一种重要关系。定义类B时, 自动得到类A的操作和数据属性,使得程序员只需定义 类A中所没有的新成分就可完成在类B的定义,这样称 类B继承了类A,类A派生了类B,A是基类(父类),B 是派生类(子类)。这种机制称为继承。 称已存在的用来派生新类的类为基类,又称为父 类。由已存在的类派生出的新类称为派生类,又称为 子类。派生类可以具有基类的特性,共享基类的成员 函数,使用基类的数据成员,还可以定义自己的新特 性,定义自己的数据成员和成员函数。 在C++语言中,一个派生类可以从一个基类派生, 也可以从多个基类派生。从一个基类派生的继承称为 单继承;从多个基类派生的继承称为多继承。图11-1 反映了类之间继承和派生关系
C++程序设计 湖南大学 杜四春、银红霞 B1,B2的基类 A A的派生类 C1,C2,C3的基类B ,B2A的派生类(单继承) C3的基类 Bl的派生类C1C2C3B1,B2的派生类(多继承) 图11-1类之间的继承与派生关系
C++程序设计 湖南大学 杜四春、银红霞 B1,B2的派生类(多继承) A B1 B2 C1 C2 C3 A的派生类(单继承) C3的基类 B1,B2的基类 A的派生类 C1,C2,C3的基类 B1的派生类 图11-1 类之间的继承与派生关系
C++程序设计 湖南大学 杜四春、银红霞 111.1派生类的定义格式 单继承的定义格式如下: clas派生类名>: public:生类新定义成员 members; <private: members; <protected members;
C++程序设计 湖南大学 杜四春、银红霞 11.1.1 派生类的定义格式 单继承的定义格式如下: class : { public: //派生类新定义成员 members; members; members; };
C++程序设计 湖南大学 杜四春、银红霞 其中,是新定义的一个类的名字,它 是从中派生的,并且按指定的派 生的。常作用如下三种关键字给予表示: public:表示公有继承; private:表示私有继承,可默认声明 protected:表示保护继承
C++程序设计 湖南大学 杜四春、银红霞 其中,是新定义的一个类的名字,它 是从中派生的,并且按指定的派 生的。 常作用如下三种关键字给予表示: public:表示公有继承; private:表示私有继承,可默认声明; protected:表示保护继承
C++程序设计 湖南大学 杜四春、银红霞 多继承的定义格式如下 class:,, public:/派生类新定义成员 members; .private:> members; protected: members;
C++程序设计 湖南大学 杜四春、银红霞 多继承的定义格式如下: class :,,… { public: //派生类新定义成员 members; members; members; };
C++程序设计 湖南大学 杜四春、银红霞 1112派生类的三种继承方式 在介绍公有继承( public)、私有继承( private) 和保护继承( protected)的继承方式前,先看一个例 子。 例11-2: 参考上述实例,说明公有继承( public)、私有继 承( private)和保护继承( protected)是常用的三种继 承方式:
C++程序设计 湖南大学 杜四春、银红霞 11.1.2 派生类的三种继承方式 在介绍公有继承(public)、私有继承(private) 和保护继承(protected)的继承方式前,先看一个例 子。 例11-2: 参考上述实例,说明公有继承(public)、私有继 承(private)和保护继承(protected)是常用的三种继 承方式:
C++程序设计 湖南大学 杜四春、银红霞 1.公有继承( public)。 公有继承的特点是基类的公有成员和保护成员作 为派生类的成员时,它们都保持原有的状态,而基类 的私有成员仍然是私有的 2.私有继承( private)。 私有继承的特点是基类的公有成员和保护成员作 为派生类的私有成员,并且不能被这个派生类的子类 访问 3.保护继承( protected)。 保护继承的特点是基类的所有公有成员和保护成 员都成为派生类的保护成员,并且只能被它的派生类 成员函数或友元访问,基类的私有成员仍然是私有的
C++程序设计 湖南大学 杜四春、银红霞 1. 公有继承(public)。 公有继承的特点是基类的公有成员和保护成员作 为派生类的成员时,它们都保持原有的状态,而基类 的私有成员仍然是私有的。 2. 私有继承(private)。 私有继承的特点是基类的公有成员和保护成员作 为派生类的私有成员,并且不能被这个派生类的子类 访问。 3. 保护继承(protected)。 保护继承的特点是基类的所有公有成员和保护成 员都成为派生类的保护成员,并且只能被它的派生类 成员函数或友元访问,基类的私有成员仍然是私有的
C++程序设计 湖南大学 杜四春、银红霞 表11-1不同继承方式的基类和派生类特性 继承方式 基类特性派生类特性 public public 公有继承 protected protected private 不可访 public private 私有继承 protected private private 不可访问 public protected 保护继承 protected protected private 不可访问
C++程序设计 湖南大学 杜四春、银红霞 继承方式 基类特性 派生类特性 公有继承 public public protected protected private 不可访问 私有继承 public private protected private private 不可访问 保护继承 public protected protected protected private 不可访问 表11-1 不同继承方式的基类和派生类特性