- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§8 继承和派生 教学要求 1、能通过继承现有的类建立新类 2、了解基类和派生类的概念 3、能够用多重继承从多个基类派生出新类 重点与难点 用多重继承从多个基类派生出新类 内容 1 基类和派生类 2 单继承 3 多继承 4 虚基类 5 应用实例——日期和时间 小结 作业 继承性 封装、继承和多态性是面向对象程序设计的三大机制, 其中, 继承性是面向对象程序设计中最重要的机制 继承机制提供了无限重复利用程序资源的一种途径, 利用继承机制, 可扩充和完善就的程序设计一适应新的需求, 这样既节省程序开发的时间和资源, 又便于维护 §8.1 基类和派生类 类的继承与派生 保持已有类的特性而构造新类的过程称为继承 在已有类的基础上新增自己的特性而产生新类的过程称为派生 被继承的已有类称为基类(或父类) 派生出的新类称为派生类(子类) §8.1 基类和派生类 继承与派生的目的 继承的目的: 实现代码重用 派生的目的: 当新的问题出现, 原有程序无法解决(或不能完全解决)时, 需要对原有程序进行改造(扩展/完善) §8.1 基类和派生类 回顾: 类的定义格式 class 类名称 { public: 公有成员(外部接口) private: 私有成员 protected: 保护型成员 } 本类内的所有成员在本类内均可访问, 但该类的对象只可访问公有成员 §8.1 基类和派生类 派生类的定义格式 1、单继承的定义格式: class 派生类名 : 继承方式 基类名 { 派生类新定义成员 }; 其中, 继承方式 为public, private和protected 2、多继承的定义格式: class 派生类名: 继承方式1 基类名1, 继承方式2 基类名2, … { 派生类新定义成员 }; §8.1 基类和派生类 派生类的三种继承方式 不同继承方式的影响主要体现在: 1、派生类成员对基类成员的访问控制(垂直) 2、派生类对象对基类成员的访问控制(水平) 三种继承方式 公有继承public 私有继承private (缺省) 保护继承protected §8.1 基类和派生类 派生类的三种继承方式 1、公有继承(public) 基类的public和protected成员的访问属性在派生类中保持不变, 但基类的private成员不可访问 派生类中的成员函数可以直接访问基类中的public和protected成员, 但不能访问基类的private成员 通过派生类的对象只能访问基类的public成员 §8.1 基类和派生类 派生类的三种继承方式 2、私有继承(private) 基类的public和protected成员都以private身份出现在派生类中, 但基类的private成员不可访问 派生类中的成员函数可以直接访问基类中的public和protected成员, 但不能访问基类的private成员 通过派生类的对象不能访问基类中的任何成员 §8.1 基类和派生类 派生类的三种继承方式 3、保护继承(protected) 基类的public和protected成员都以protected身份出现在派生类中, 但基类的private成员不可访问 派生类中的成员函数可以直接访问基类中的public和protected成员, 但不能访问基类的private成员 通过派生类的对象不能访问基类中的任何成员 protected 成员的特点与作用 对建立其所在类对象的模块来说(水平访问时), 它与private成员的性质相同 对于其派生类来说(垂直访问时), 它与public成员的性质相同 既实现了数据隐藏, 又方便继承, 实现代码重用 class A { //基类 private: int priA; protected: int proA; public: int pubA; }; void main() { A a; //基类对象 a.priA = 1; //错误: 不可访问 A = 1; //错误: 不可访问 a.pubA = 1; //正确 B b; //派生类对象 b.priA = 1;
文档评论(0)