C++继承与派生的概念、什么是继承和派生

在C++中可重用性是通过继承(inheritance)这一机制来实现的。因此,继承是C++的一个重要组成部分。

前面介绍了类,一个类中包含了若干数据成员和成员函数。在不同的类中,数据成员和成员函数是不相同的。但有时两个类的内容基本相同或有一部分相同,例如巳声明了学生基本数据的类Student:

  1. class Student
  2. {
  3. public:
  4. void display( ) //对成员函数display的定义
  5. {
  6. cout<<"num: " <<num<<endl;
  7. cout<<"name: "<< name <<endl;
  8. cout <<"sex: "<<sex<<endl;
  9. }
  10. private:
  11. int num;
  12. string name;
  13. char sex;
  14. };

如果学校的某一部门除了需要用到学号、姓名、性别以外,还需要用到年龄、地址等信息。当然可以重新声明另一个类class Student1:

  1. class Student1
  2. {
  3. public:
  4. void display( ) //此行原来已有
  5. {
  6. cout<<"num: " <<num<<endl; //此行原来已有
  7. cout<<"name: "<< name <<endl; //此行原来已有
  8. cout <<"sex: "<<sex<<endl; //此行原来已有
  9. cout <<"age: "<<age<<endl;
  10. cout <<"address: "<<addr<<endl;
  11. }
  12. private:
  13. int num; //此行原来已有
  14. string name; //此行原来已有
  15. char sex; //此行原来已有
  16. int age;
  17. char addr[20];
  18. };

可以看到有相当一部分是原来已经有的,可以利用原来声明的类Student作为基础,再加上新的内容即可,以减少重复的工作量。C++提供的继承机制就是为了解决这个问题。

在C++中,所谓“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类称为“基类(base class)”或“父类(father class)”,新建的类称为“派生类(derived class)”或“子类(son class )”。

一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。通过继承,一个新建子类从已有的父类那里获得父类的特性。从另一角度说,从已有的类(父类)产生一个新的子类,称为类的派生。类的继承是用已有的类来建立专用类的编程技术。派生类继承了基类的所有数据成员和成员函数,并可以对成员作必要的增加或调整。一个基类可以派生出多个派生类,每一个派生类又可以作为基类再派生出新的派生类,因此基类和派生类是相对而言的。一代一代地派生下去,就形成类的继承层次结构。相当于一个大的家族,有许多分支,所有的子孙后代都继承了祖辈的基本特征,同时又有区别和发展。与之相仿,类的每一次派生,都继承了其基类的基本特征,同时又根据需要调整和扩充原 有的特征。

以上介绍的是最简单的情况:一个派生类只从一个基类派生,这称为单继承(single inheritance),这种继承关系所形成的层次是一个树形结构,如图11.3所示。


图 11.3


一个派生类不仅可以从一个基类派生,也可以从多个基类派生。也就是说,一个派生类可以有一个或者多个基类。一个派生类有两个或多个基类的称为多重继承(multiple inheritance)。关于基类和派生类的关系,可以表述为派生类是基类的具体化,而基类则是派生类的抽象。

posted @ 2014-12-04 14:15  cronus象牙塔  阅读(664)  评论(0编辑  收藏  举报