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