- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
继承与派生第四章哈尔宾工业大学
哈尔滨工程大学课件 哈尔滨工程大学课件 第四章 继承与派生 吴良杰 Harbin Engineering University 继承与派生的实例 动物 哺乳类 鸟类 鱼类 灵长类 猫 科 狮子 虎 豹 狮虎兽 继承与派生的相关概念 继承: 保持已有类的特性而构造新类的过程。 派生: 在已有类的基础上新增自己的特性而产生新类的过程。 基类(或父类) : 被继承的已有类。 派生类: 派生出的新类。 继承与派生的相关概念 继承的目的: 实现代码重用。 派生的目的: 当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造 派生类的声明 声明格式: class 派生类名:继承方式 基类名 { 派生类新成员声明; } class stu {public: …… private: char name[ ]; int age; }; class stu1:public stu {public: void chose( ); private: char spec[20] ; }; 继承的种类 直接基类 直接参与新类派生的基类 间接基类 基类的基类或更高层的基类。 单继承 只有一个直接基类的继承。 多继承 同时有多个基类的继承。 继承的过程 1. 吸收基类成员 接收基类中除构造函数和析构函数之外的所有成员。 2. 改造基类成员 根据继承方式对基类成员进行隐藏 3. 添加新的成员 给派生类定义新的成员,实现新的功能。 派生类对基类成员的访问控制 class A {public: void set( ) void disp( ) protected: int w; private: float x,y; }; class B :public A {public: void dispB( ) private: int c,d; }; void main( ) {B oa; oa.dispB(); oa.set( ); void dispB( ) { set( ); disp( ); w=3; x=4.7; } 公有成员和保护成员的访问方式在派生类中保持不变 派生类对基类成员的访问控制 class A {public: void set( ) void disp( ) protected: int w; private: float x,y; }; class B :private A {public: void dispB( ) private: int c,d; }; void main( ) {B oa; oa.dispB(); oa.set( ); void dispB( ) { set( ); disp( ); w=3; x=4.7; } 公有成员和保护成员的访问方式在派生类中为私有成员 派生类对基类成员的访问控制 class A {public: void set( ) void disp( ) protected: int w; private: float x,y; }; class B :protected A {public: void dispB( ) private: int c,d; }; void main( ) {B oa; oa.dispB(); oa.set( ); void dispB( ) { set( ); disp( ); w=3; x=4.7; } 公有成员和保护成员的访问方式在派生类中为保护成员 派生类对基类成员的访问控制 1、基类的私有成员: 不能以任何方式访问。 2、基类的公有成员: 公有继承:公有成员 保护继承:保护成员 私有继承:私有成员 3、基类的保护成员: 公有继承:保护成员 保护继承:保护成员 私有继承:私有成员 派生类的构造函数 派生类构造函数的任务 1) 初始化新增数据成员 2) 调用基类构造函数,初始化继承来的成员。 单继承构造函数形式 派生类名::派生类名(形参):基类名(参数表) { 本类成员初始化赋值语句; }; 形参表: 基类所需的形参, 本类成员所需的形参 派生类的构造函数 class B { public: B() {b=0;} B(int i) {b=i;} ~B() {cout“exit b”
文档评论(0)