C++语言程序设计 第七章继承与派生 x
1 第七章 继承与派生 C++语言程序设计
C++语言程序设计 本章简介 C++支持类的继承与派生机制。 继承与派生是面向对象程序设计的关键概念。 ●通过继承与派生,实现代码重用。 x
C++语言程序设计 2 本章简介 ⚫ C++支持类的继承与派生机制。 ⚫ 继承与派生是面向对象程序设计的关键概念。 ⚫ 通过继承与派生,实现代码重用
C++语言程序设计 本章主要内容 ●类的继承与派生 ●类成员的访问控制 单继承与多继承 ●派生类的构造、析构函数 ●多级多继承中成员的标识与访问 x
C++语言程序设计 3 本章主要内容 ⚫类的继承与派生 ⚫类成员的访问控制 ⚫单继承与多继承 ⚫派生类的构造、析构函数 ⚫多级多继承中成员的标识与访问
C++语言程序设计 类的继承与派生 保持已有类的特性而构造新类的过程 称为继承。 在已有类的基础上新增自己的特性而 产生新类的过程称为派生。 ●被继承的已有类称为基类(或父类)。 派生出的新类称为派生类。 x
C++语言程序设计 4 类的继承与派生 ⚫ 保持已有类的特性而构造新类的过程 称为继承。 ⚫ 在已有类的基础上新增自己的特性而 产生新类的过程称为派生。 ⚫ 被继承的已有类称为基类(或父类)。 ⚫ 派生出的新类称为派生类
C++语言程序设计 继永与派生问题举例 类 交通工具 的 继 汽车 承与派生 事物的层次关系 小汽车卡车旅行车 工具车轿车面包车 x
C++语言程序设计 5 继承与派生问题举例 工具车 轿 车 面包车 小汽车 卡 车 旅行车 汽 车 类 交通工具 的 继 承 与 派 生 事 物 的 层 次 关 系
C++语言程序设计 继永与派生的目的 类 的。继承的目的:实现代码重用。 继 承·派生的目的:当新的问题出现,原有 与程序无法解决(或不能完全解决)时, 派 生需要对原有程序进行改造。 x
C++语言程序设计 6 继承与派生的目的 ⚫ 继承的目的:实现代码重用。 ⚫ 派生的目的:当新的问题出现,原有 程序无法解决(或不能完全解决)时, 需要对原有程序进行改造。 类 的 继 承 与 派 生
C++语言程序设计 继承与派生的工作方式 假设已经有了一个学生类 Student ●因为应用的需要,要创建研究生类 Graduate Student ●研究生除了自己特有的属性外,具有学生 的所有性质 用继承与派生的方法重用学生类。 x
C++语言程序设计 7 继承与派生的工作方式 ⚫ 假设已经有了一个学生类Student ⚫ 因为应用的需要,要创建研究生类 GraduateStudent ⚫ 研究生除了自己特有的属性外,具有学生 的所有性质 ⚫ 用继承与派生的方法重用学生类
nc据i腦雄砌饼 #include <string using namespace std class Student [public: Student(char pname="nobody") Istrcpy(name, pname); average= semesterHours =0; y void add Course(int hours, float grade average=( semesterHours* average+ grade);∥总分 semesterHours+= hours;∥总修学时 average/= semesterHours;∥平均分} oid display cout << name=<<name < hours="<<semester Hours<<", average="<<average<<endl; 1 protected: char name[401 int semesterHours float average
C++语言程序设计 8 #include #include using namespace std; class Student {public: Student(char *pname="nobody") {strcpy(name,pname); average = semesterHours =0; } void addCourse(int hours,float grade) { average = (semesterHours * average + grade); //总分 semesterHours +=hours; //总修学时 average /=semesterHours; //平均分} void display() {cout <<"name = "<<name <<",hours = "<<semesterHours<<",average = "<<average<<endl;} protected: char name[40]; int semesterHours; float average; };
C++语言程序设计 class Advisor i int noofMeeting class Graduate Student: public Student public int getQualifier (return qualifier Grade 1 rotected Advisor advisor int qualifier Grade;
C++语言程序设计 9 class Advisor { int noOfMeeting; }; class GraduateStudent:public Student { public: int getQualifier(){return qualifierGrade;} protected: Advisor advisor; int qualifierGrade; };
C++语言程序设计 void tn(student &s) 【∥任何需要处理的学生问题 int main( i Student ds(John") Graduate Student gs 对象gs可以做对象ds能做 ds. add Course(4, 8.5) 的任何事情。 ds display gs addCourse(3, 7.5) gs display x fn(gs)
C++语言程序设计 10 void fn(Student &s) { //任何需要处理的学生问题 } int main() { Student ds("John"); GraduateStudent gs; ds.addCourse(4,8.5); ds.display(); gs.addCourse(3,7.5); gs.display(); fn(gs); } 对象gs可以做对象ds能做 的任何事情