第8章继承与派生.pptVIP

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
主讲教师:杨琦 第8章 继承与派生 计算机教学实验中心 西安交通大学 教学目标 介绍面向对象程序设计的 基本概念: 类的继承与派生 不同继承方式下的基类成员的访问控制 添加派生类的构造和析构函数 学习要求 1.掌握继承和派生的概念,派生类的定义方法。 2.熟悉继承的不同方式对基类成员的访问控制 3.掌握多重继承的概念、定义方法、多重继承派生类构造函数的执行顺序。 先执行所有基类的构造函数(顺序按照定义派生类时指定的各基关顺序) 再执行对象成员所在类的构造函数(顺序按照它们在类中的声明顺序) 最后执行派生类构造函数体中的内容 授课内容 8.1 继承与派生 8.2 派生类的继承方式 8.3 派生类的构造函数和析构函数 自学内容 8.4 显式访问基类成员 8.5 静态成员 8.6 类模板 调试技术 程序设计举例 8.1 继承和派生 派生类的定义格式为: class 派生类名:继承方式 基类名1,继承方式 基类名2,…,继承方式 基类名n { 派生类增加的成员声明; }; 图8.1 水果的分类 派生类的语法结构 class 派生类名:访问权限 基类名 { private: 新增私有数据成员和成员函数 protected: 新增保护数据成员和成员函效 public: 新增公有数据成员和成员函效 } 派生类中的变化 派生类对基类的扩充 派生类对基类成员的改造 系统的默认值就是私有继承(private)。 8.2 派生类的继承方式 私有继承private 公有继承public 保护继承protected 公有继承(public) 公有继承方式创建的派生类对基类各种成员访问权限如下 : 基类公有成员相当于派生类的公有成员,即派生类可以象访问自身公有成员一样访问从基类继承的公有成员。 基类保护成员相当于派生类的保护成员,即派生类可以象访问自身的保护成员一样,访问基类的保护成员。 对于基类的私有成员,派生类内部成员无法直接访问。派生类使用者也无法通过派生类对象直接访问。 实例:公有继承(public) class Person { private: char m_strName[20]; int m_nAge; int m_nSex; public: void GetName(char *Name); int GetAge(); char GetSex(); ... ... }; 例8-1 从Person类公有派生一个职员类 class Employee: public Person { char m_strDept[20]; float m_fSalary; public: Employee() { EmployeeRegister(XXX,0,m,XXX,0); } EmployeeRegister(char *name, int age, char sex, char *dept, float salary); void ShowMe(); }; 私有继承 (private) 派生类对基类各种成员访问权限如下 : 基类公有成员和保护成员都相当于派生类的私有成员,派生类只能通过自身的函数成员访问他们 对于基类的私有成员,无论派生类内部成员或派生类使用者都无法直接访问。 实例:私有继承(private) class Person { private: char m_strName[20]; int m_nAge; int m_nSex; public: void GetName(char *Name); int GetAge(); char GetSex(); ... ... }; 例8-2 人员类(Person)的私有派生类 class Employee: private Person //雇员类定义 { char m_strDept[20]; //工作部门 float m_fSalary; //月薪 public: Employee() { EmployeeRegister(XXX,0,m,XXX,0); } EmployeeRegister(char *name, int age, char sex, char *dept, float salary); void ShowMe(); //显示雇员信息 char* GetEmployeeName() { return GetName(); }//取姓名 char GetEmployeeSex() { re

文档评论(0)

飞扬的岁月 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档