5.1继承与派生的概念 4、多层次继承: 派生类可以作为基类再继续派生出更新的类,依此 类推形成一个层次结构。直接参与派生出某类称为直 接基类,而基类的基类,以及更深层的基类称为间接 基类。 学生 员工 小学生 大学生 经理 工程师
派生类可以作为基类再继续派生出更新的类,依此 类推形成一个层次结构。直接参与派生出某类称为直 接基类,而基类的基类,以及更深层的基类称为间接 基类。 4、多层次继承: 5.1 继承与派生的概念 人 学生 员工 小学生 大学生 经理 工程师 5
5.1继承与派生的概念 5、类族: CObject 令 CCmdTarget CWinThread CWnd CDocument CHinApp CFrameWnd CView CDialog 好 CIDIFrameWnd CIDIChildWnd C题inFrameWnd 6
5、类族: 一个基类可以派生出多个派生类。这样形成了一个 相互关联的类族。MFC就是这样的类族。 5.1 继承与派生的概念 6
5.2派生类的声明方式 一、声明方式 class派生类名:继承方式基类名 private: 成员表1; public: 成员表2: protected: 成员表3; }; 基类名是已定义的类。在派生类的类体中定义的成员称为 派生类成员,它们是新增加成员,给派生类添加了不同于基 类的新的属性和功能。 7
7 5.2 派生类的声明方式 一、声明方式 class 派生类名:继承方式 基类名 { private: 成员表1; public: 成员表2; protected: 成员表3; }; 基类名是已定义的类。 在派生类的类体中定义的成员称为 派生类成员,它们是新增加成员,给派生类添加了不同于基 类的新的属性和功能
二、例5.1把student类定义为person类的派生类 ① class student:public person ② {public: ② #include <iostream> #include <string> ③ void get_st() ③ using namespace std; ④ cin>>stu_id; ④ class person ⑤ ∥引用派生类私有成员 ⑤ {public: ⑥ void student_display() ⑥ void get_value()】 ⑦ cout<<"stu_id:" ⑦ cin>>num>>name; ⑧ <stu_id<<endl; ⑧ void person_display() ⑨ private: ⑨ {cout<<"id:"<<num<<endl; 四 int stu_id; ⑩ cout<<"name:" ① } ① <<name<<endl; ② ② void main() private: ⑧ int num; student zhangsan; 四 string name; ④ zhangsan.get_value(); ; ⑤ zhangsan.person_display(); 16 zhangsan.get_st(); ⑩ zhangsan.student_display(); 1⑧
① #include <iostream> ② #include <string> ③ using namespace std; ④ class person ⑤ {public: ⑥ void get_value( ) ⑦ { cin>>num>>name; } ⑧ void person_display( ) ⑨ {cout<<"id:"<<num<<endl; ⑩ cout<<"name:" ⑪ <<name<<endl; } ⑫ private: ⑬ int num; ⑭ string name; ⑮ }; ① class student : public person ② {public: ③ void get_st( ) ④ { cin>>stu_id; } ⑤ //引用派生类私有成员 ⑥ void student_display( ) ⑦ { cout<<"stu_id:" ⑧ <stu_id<<endl; } ⑨ private: ⑩ int stu_id; ⑪ }; ⑫ void main( ) ⑬ { student zhangsan; ⑭ zhangsan.get_value(); ⑮ zhangsan.person_display( ); ⑯ zhangsan.get_st(); ⑰ zhangsan.student_display( ); ⑱ } 二、例5.1 把student 类定义为person类的派生类 8
5.2派生类的声明方式 三、练习: 把点类point定义为形状类shapel的派生 类;把圆类circle定义为类shapel的派生 类。 9
三、练习: 把点类point定义为形状类shape的派生 类;把圆类circle定义为类shape的派生 类。 5.2 派生类的声明方式 9