1、第十五章 继承15.1 继承的概念15.2 继承的工作方式15.3 派生类的构造15.4 继承与组合15.5 多态性15.6 多态的思考方式15.7 多态性如何工作引言继承是 C+语言的一种重要机制,该机制自动地为一个类提供来自另一个类的操作和数据结构,只需在新类中定义已有类中没有的成分来建立新类。 15.1 继承的概念说明:( 1)当一个类继承另一个类时,这个类被称为 继承类 、派生类或子类,另一个类被称为 被继承类 、基类或父类。( 2)子类能够继承父类的全部特征,包括所有的数据成员和成员函数,并且子类还能够定义父类所没有的、属于自己的特征,即自己的数据成员和成员函数。( 3)通过类的继承
2、关系,使得一些类的代码可以在定义另一些类时被重用,避免了代码的重新书写和调试。 第十五章 继承15.1 继承的概念15.2 继承的工作方式15.3 派生类的构造15.4 继承与组合15.5 多态性15.6 多态的思考方式15.7 多态性如何工作15.2 继承的工作方式派生类的定义格式:class 派生类名:访问权限 基类名 成员表 ;例 1:已知学生类和研究生类,研究生类重用研究生类。class Student /学生类 / ;class GraduateStudent:public Student /研究生类 / ;说明 : GraduateStudent类继承了 Student类的所有成员
3、。例 2:继承/ch16_1.cpp#include#includeclass Advisor /导师类 int noOfMeeting; ;class Student /学生类 public:Student(char*pName= no name ) strcpy(name,pName);aveage=semesterHours=0;例 2: 续 1void addCourse(int hours,float grade) average=(semesterHours*averge+grade); /总分semesterHours+=hours; /总修学时average/=semester
4、Hours; /平均分int getHours() return semesterHours; float getAverage() return average; void display() cout name= name ,hours= semesterHours ,average= averageendl;protected: char name40; int semesterHours; float average; 例 2: 续 2class GraduateStudent:public Student/研究生类,继承学生类 public:int getQualifier() re
5、turn qualifierGrade; /新的成员函数protected:Advisor advisor; /组合导师类int qualifierGrade; /新的数据成员;void main() Student ds( Lo lee Undergrad );GraduateStudent gs;ds.addCourse(3,2.5); ds.disqlay();gs.addCourse(3,3.0); gs.disqlay(); 例 2: 续 3结果:name= Lo lee ndergrad ,hours=3,average=0.833333name= no name ,hours=3
6、,average=1说明 :( 1) ds是 Student类对象, gs是 GraduateStudent类对象。( 2)作为 Student的子类,对象 gs可以做 ds能做的任何事情,它有 name40、 semesterHours、 average数据成员,以及 addCourse等成员函数,此外还有导师 advisor和资格考试分 qualifierGrade。( 3)对象 gs中包含有 Student对象空间部分, gs用 this指针访问 Student成员与访问自己增加的成员没有区别。第十五章 继承15.1 继承的概念15.2 继承的工作方式15.3 派生类的构造15.4 继承与组合15.5 多态性15.6 多态的思考方式15.7 多态性如何工作