面向对象程序设计(09_3).pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象程序设计(09_3)

C++面向对象程序设计 信息科学与工程学院 罗宪 第四章 派生类、基类和继承性 (教材①P289-358) 本章主要内容: 继承的概念 单继承的派生类 派生类的构造函数与析构函数 基类和派生类的赋值规则 多继承 综合举例 第四章 派生类、基类和继承性 继承是面向对象程序设计最重要的概念之一; 继承主要作用:提高软件的可重用性和可维护性,从而大大减少软件的代码量; 继承的思想是学习面向对象程序设计应建立的最主要的思想——在程序设计时,面对多个实体,首先应分析的是能否采用继承机制处理。 在C++面向对象程序设计中,实现继承的机制是通过派生得到的,即在已有类的基础上创建新类,从而在新类中继承原类的成员(数据及函数)。 原类(被继承的类)称为基类,在基类的基础上创建的新类称为派生类。 第一节 继承的概念 一、什么是继承 继承是客观世界中实体间的一种关系。如: 第一节 继承的概念 第一节 继承的概念 继承的特点: 继承具有层次结构 越在上面的类越具有普通性和共性,下层比上层更具体,越在下层越细化、专门化。 继承具有传递性,即派生类能自动继承上层基类的全部数据结构及操作方法(数据成员及成员函数)。 三、继承的分类及有关术语 1、继承的分类 单继承:只有一个基类的继承——构成树形类层次结构 多继承:有二个或以上基类的继承——构成有向图的层次结构 第一节 继承的概念 2、继承的有关术语 基类(Base) 派生类(Derived) 直接基类 间接基类 直接派生 间接派生 第二节 单继承的派生类 一、派生类的定义 1、定义格式: 第二节 单继承的派生类 #includeiostream using namespace std; class Base //基类Base的定义 { private: float x,y; public: Base(float a=0,float b=0) {x=a;y=b;} void print(void) { coutx=x“ y=yendl;} }; 第二节 单继承的派生类 class Derived:public Base //派生类Derived的定义——注意定义方法 { private: float z; public: Derived(float a=0,float b=0,float c=0):Base(a,b) { z=c;}//派生类的构造函数定义 void print(void) //派生类的成员函数 { Base::print();//调用基类Base的成员函数print(); coutz=zendl; } }; 第二节 单继承的派生类 void main(void) { Base a(10.0,20.0); Derived b(10.0,20.0,30.0); a.print(); b.print(); } 第二节 单继承的派生类 2、说明 在定义派生类时用“:”将派生类与基类分开,构成类的层次结构; 派生类与普通类的定义一样,仍然有数据成员与成员函数; 派生类的构造函数中必须提供为基类数据成员进行初始化的参数表。格式: 第二节 单继承的派生类 二、公有继承和私有继承 从上例可以看到,在定义派生类时,需要在基类名前加上派生方式,或称为继承方式。 ㈠ 继承方式 1、继承方式种类 继承方式包括:公有继承(public)、私有继承(private)、保护继承(protected)等三种继承方式;其派生类分别称为公有派生类、私有派生类、保护派生类。 2、不同继承方式下基类成员的访问特性 (主要讨论公有继承和私有继承。) 第二节 单继承的派生类 第二节 单继承的派生类 ⑴ 基类的私有成员在派生类的作用域内均不可见。 无论那种继承方式,派生类的成员函数均不能使用基类的私有成员; 派生类中可以通过调用基类中的公有成员函数访问基类中的私有数据成员。 ⑵ 保护成员 私有继承:保护成员在派生类中变为私有成员——可以在派生类中直接访问; 公有继承:保护成员在派生类中的访问权限不改变——可以在派生类中直接访问; 第二节 单继承的派生类 例【4.2】保护成员的使用(e402.cpp) ⑶ 公有成员 私有继承:公有成员在派生类中变为私有成员; 公有继承:公有成员在派生类中的访问权限不改变。 3、结论: 公有继承与私有继承的相同点:两种派生方式,其基类中的私有成员,在派生类中均无权使用,只能通过基类的公有成员访问; 公有继承与私有继承的不同点:公有派生时,基类中的公有成员、保护成员在派生类中的访问权限不变;私有继承时,基类中的公有成员、保护成员均变为私有成员。 第二节 单继承的派生类 三、基类对象和派生类对象 对象对数据成员的访问是通过调用公有

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档