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 <iostream> #include <string> 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能做 的任何事情