c++第七章(继承与派生).ppt

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

第七章 继承与派生 软件学院 张振琳 本章主要内容 类的继承与派生 类成员的访问控制 单继承与多继承 派生类的构造、析构函数 类成员的标识与访问 类的继承与派生 保持已有类的特性而构造新类的过程称为继承。 在已有类的基础上新增自己的特性而产生新类的过程称为派生。 被继承的已有类称为基类(或父类)。 派生出的新类称为派生类。 继承与派生问题举例 继承与派生问题举例 继承与派生的目的 继承的目的:实现代码重用。 派生的目的:当新的问题出现,原有程序无法解决(或不能完全解决)时,需要对原有程序进行改造。 派生类的声明 class 派生类名:继承方式 基类名 { 成员声明; } 例子7-1 继承类型 在例子中,使用了Showfatherheightweight()和ShowSonData()两个成员函数分别输出基类和子类的数据,感觉好麻烦,可以不可使用统一的show函数将基类和子类的数据一次性输出, void show() { cout父亲身高=fatherheight\t父亲体重=fatherweightendl; cout儿子肩宽=Sonwidth\t儿子臂长=Sonlengthendl; } 继承类型 将其加入编译不能通过,原因在于其中的4个私有成员的来源不同,两个来自基类father,两个来自子类son,由于类的私有成员只能被其成员函数访问,所以导致无法编译。在派生类中,派生类的成员函数可以直接访问基类的公有成员,但是不能访问基类的私有成员。这是封装的思想,它的目的是为了避免一个类的成员函数在调用另一个类的数据成员时误修改该类的数据成员。 继承类型 既然基类的私有成员不能被其他类访问,而公有成员又是被所有类共享,那么假如我们有一些数据只想被指定的类所访问该如何呢? C++为了解决这一问题,引入了保护成员的概念,在基类的定义中,使用关键字protected来说明它后面的是该类的保护成员,对于其他类来说,该成员是受保护的,也就是说其他类不能访问该成员,但是对于派生类来说,该成员是可访问的。例如7-2 继承方式 不同继承方式的影响主要体现在: 派生类成员对基类成员的访问权限 通过派生类对象对基类成员的访问权限 三种继承方式 公有继承 私有继承 保护继承 公有继承(public) class son:public father; 该行中的关键字public的意思是对于father这个基类进行公有继承,派生出的类叫son。 (1)公有继承的公有成员 例如7-3,7-4 结论:公有继承的前提下,基类的公有成员在派生类中仍然是公有的。 公有继承(public) (2)公有继承的保护成员 将上一节的7-4代码中的基类的公有属性改为保护属性,再测试一下。 例如7-5,7-6; 7-5 7-6 结论 派生类将基类的保护成员也原封不动的继承过来,所以在公有派生的前提下,基类的保护成员在派生类中仍然是被保护的。 公有继承(public) (3)公有继承的私有成员 不过父亲毕竟也有他的小秘密,即使是儿子也不愿透露,因此对于其深埋心里的小秘密,他儿子也不得而知。 例如7-7; 将7-5的protected改为private,结果在编译时报错。 公有继承(public) (4)继承的赋值 考虑一下基类的对象可不可以赋值给子类,或者子类的对象可不可以赋值给基类?一般来说,只有派生类的对象可以赋值给基类的对象。 如派生的对象赋给基类的对象: father a; son b; a=b; 私有继承(private) 私有继承就像是私生子,他不能直接享受父亲的大房子,但是他毕竟是父亲的孩子,所以小孩仍然可以享受父亲的大房子,不过要麻烦些。 例如7-8 编译后出现一个错误 “room : cannot access public member declared in class father” 私有继承(private) 以私有方式继承后,基类的公有成员变成了私有,派生类中想要访问这个私有的成员,必须定义一个公有函数作为接口,定义一个公有函数enjoy来访问私有成员。如7-9. 公有继承(public) 基类的public和protected成员的访问属性在派生类中保持不变,但基类的private成员不可直接访问。 派生类中的成员函数可以直接访问基类中的public和protected成员,但不能直接访问基类的private成员。 通过派生类的对象只能访问基类的public成员。 私有继承(private) 基类的public和protected成员都以private身份出现在派生类中,但基类的private成员不可直接访问。 派生类中的成员函数可以直接访问基类中的public和protected成员,

文档评论(0)

此项为空 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档