第五章 c继承和派生.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章 c继承和派生

第五章 继承与派生 本章主要内容 类的继承与派生 派生类的构造与析构函数 继承的冲突与支配 虚基类 §5.1 继承与派生的概念 §5.1 类的继承与派生 如果已定义好的类不能完全满足需要,应该定义一个新类,效率较高的作法是保留原类中可以使用的部分,仅增加新的功能即可 C++提供“继承与派生”机制解决此问题 继承与派生用于对封装好的类进行功能扩充或代码重载以满足个性需要 §5.1 类的继承与派生 继承与派生概念: 实质:在已有类基础上产生一个新类 继承:新类保持已有类的成员及特性的过程 派生:在已有类基础上新增成员的过程 被继承的已有类称为(基类或父类),生成的新类称为派生类 特点: 继承使来源相同的基本成员保持一致性 新增成员可以扩充程序功能,或通过重载成员函数修改程序功能 §5.1 类的继承与派生 §5.1 类的继承与派生 §5.1 类的继承与派生 §5.1 类的继承与派生 继承的目的:实现代码重用。 派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。 §5.1 类的继承与派生 class 派生类名:继承方式 基类名 { 新增成员声明; } §5.1 类的继承与派生 class employee {protected: char *name; //姓名 int individualEmpNo; //个人编号 float accumPay; //月薪总额 public: employee( ); //构造函数 ~employee( ); //析构函数 void pay( ); //计算月薪函数 void displayStatus( ); //显示人员信息 }; §5.1 类的继承与派生 class technician:public employee //兼职技术人员类 { private: float hourlyRate; //每小时酬金 int workHours; //当月工作时数 public: technician( ); //构造函数 void pay( ); //计算月薪函数 void displayStatus( ); //显示人员信息 }; §5.1 类的继承与派生 吸收基类成员 将基类成员全盘接收,构造函数和析构函数除外 添加新的成员 加入新成员是继承与派生的核心 构造函数和析构函数必须重新加入  改造基类成员 通过继承方式控制基类成员的访问权限 覆盖同名基类数据和函数成员 §5.1 类的继承与派生 派生成功后兼职技术人员类technician的成员如下: 数据成员 char *name; //姓名 int individualEmpNo; //个人编号 float accumPay; //月薪总额 float hourlyRate; //每小时酬金 int workHours; //当月工作时数 函数成员 technician( ); //构造函数 void pay( ); //计算月薪函数 void displayStatus( );/显示人员信息 §5.2 类的继承方式 派生类继承来的原基类成员的访问权限与新增成员不尽相同,主要由继承方式决定 不同继承方式的影响主要体现在: 1、派生类成员对基类成员的访问控制 2、派生类对象对基类成员的访问控制 三种继承方式 公有继承 私有继承 保护继承 §5.2类的继承方式 内部访问-成员的访问 基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可访问 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能访问基类的private成员 类外访问-通过派生类对象进行的访问 只能访问基类的public成员 #include iostream.h //no5.1-1.cpp class A { int a1; protected: int a2; public: int a3; void Set( int x ) { a1 = x; } int Geta1( ) { return a1; } int Geta2( ) { return a2; } }; class B: public A { int b1; protected: int b2; public: int b3; InitB( int x1, int x2, int x3 ) { Set( x1 ); a2 = x2; a3 = x3; b1 = x1 + 1; b2 = x2 + 2; b3 = x3 +3; } int Getb1( )

文档评论(0)

ldj215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档