实验五 继承(二).docVIP

  1. 1、本文档共8页,可阅读全部内容。
  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文档。上传文档
查看更多
实验五 继承㈡ —— 基类对象与派生类对象 一、实验目的 1.理解公有继承、私有继承方式下,类及对象的访问权限;掌握公有继承方式下派生类对象访问基类私有成员、保护成员的方法;了解私有继承方式下派生类对象访问基类私有成员、保护成员的方法。 2.理解继承的传递性;掌握公有继承方式下,间接派生类对象访问间接基类私有成员、保护成员的方法;了解私有继承方式下间接派生类对象访问间接基类私有成员、保护成员的方法。 3.理解基类与派生类对象、指针、引用的兼容性规则,熟悉派生类对象、指针、引用作为函数参数的各种方式。 二、实验学时 课内实验:2课时 课外练习:2课时 三 本实验涉及的新知识 ㈠ 类及对象的访问权限 1.派生类对基类成员的访问权限 由实验四可知,在不同继承(派生)方式下,基类的成员在派生类中(作用域内)的访问权限不同。 ⑴ 基类的私有成员 无论哪种继承方式,基类的私有成员在派生类的作用域内均不可见,只能通过基类的公有成员函数访问。 ⑵ 基类的保护成员、公有成员 在公有继承下,基类的保护成员、公有成员在派生类的访问特性不变,在派生类的作用域内可以直接访问,也可以调用基类的公有成员访问;在私有继承方式下,基类的保护成员、公有成员均改变成私有成员,但在派生类作用域内仍可以直接访问(在类中,可以访问自身的所有成员)。 2.类对象对类成员的访问权限 无论是基类对象或是派生类的对象,都只能访问所属类的公有成员,而私有成员、保护成员只能通过调用所属类的公有成员函数访问。 3.派生类对象对基类私有数据成员、保护成员的访问 ⑴ 公有继承(public)方式 ① 直接通路 在公有派生方式下,派生类对象可直接调用基类的公有成员函数访问基类的私有成员、保护成员: 派生类对象→基类公有成员函数→基类的私有成员 派生类对象→基类公有成员函数→基类的保护成员 ② 间接通路 派生类对象→派生类公有成员函数→基类公有成员函数→基类的私有成员 派生类对象→派生类公有成员函数→基类公有成员函数→基类的保护成员 派生类对象→派生类公有成员函数→基类的保护成员 ⑵ 私有继承(public)方式 ① 间接通路 在私有派生方式下,直接通路被隔断,只能用间接方式 派生类对象→派生类公有成员函数→基类公有成员函数→基类的私有成员 派生类对象→派生类公有成员函数→基类公有成员函数→基类的保护成员 派生类对象→派生类公有成员函数→基类的保护成员 ② 声明调整机制 在C++提供了一种声明调整机制,即在私有继承的派生类中重新将基类的公有成员函数声明为公有的,这样派生类对象就可以直接访问基类的公有成员。 格式: public: 基类名::基类公有成员函数名; ㈡ 继承的传递性 派生类的继承具有传递性,即派生类既可以继承直接基类的数据结构及操作方法,也可继承间接基类的数据结构及操作方法。由于公有继承方式与私有继承方式在派生类中访问基类成员的权限不一样,其传递方法也是不同的。 1.公有继承的传递性 公有继承方式上,基类中的公有成员、保护成员在派生类中的访问权限不改变。即:派生类(直接派生、间接派生)的成员函数可直接调用访问基类(直接基类、间接基类)的公有成员及保护成员;派生类(直接派生、间接派生)的对象可以调用基类(直接基类、间接基类)的公有成员,并通过基类的公有成员函数访问基类的私有成员。公有继承方式下的传递性为: ⑴ 第一条消息通路:基类对象可通过基类的公有成员函数访问其私有数据成员(同上)。 ⑵ 第二条消息通路:直接派生类对象可以调用基类的公有成员函数访问基类的私有成员; ⑶ 第三条消息通路:间接派生类对象可直接调用间接基类的公有成员函数访问间接基类的私有数据成员。 2.私有继承的传递性 私有继承方式下,基类的公有成员、保护成员均变为了私有的,派生类对象不能直接访问基类的公有成员、保护成员,即不能通过基类的公有成员函数访问基类的私有成员,而必须通过其它方法打开其消息通路。私有继承方式下的传递性为: ⑴ 第一条消息通路:基类对象可通过基类的公有成员函数访问其私有数据成员。 ⑵ 第二条消息通路:在直接派生类中重新编写公有成员函数,通过调用基类的公有成员函数访问基类的私有成员。 ⑶ 第三条消息通路:接力式的访问,即在间接派生类中重新编写公有成员函数,调用直接基类的公有成员函数,从而调用间接基类的公有成员函数访问间接基类的私有成员。 实际应用中,主要采用公有继承方式,因此重点应掌握公有继承方式下传递性。 ㈢ 赋值兼容性规则 在公有继承方式下,基类与派生类派生类具有以下赋值规则: 1.可以将派生类对象赋值给基类对象(不能将基类对象赋值给派生类对象)。 格式: 基类对象=派生类对象; 2.基类的对象指针可以指向基类对象,也可以指向派生类对象(派生类指针只能指向派生类对象,不能指向

文档评论(0)

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

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

1亿VIP精品文档

相关文档