- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向對象程序设计辅导(四)
面向对象程序设计辅导(四)
---类的继承与多态性
徐孝凯
一、类的继承
类是一种抽象数据类型,是对具有共同属性和行为的对象(事物)的抽象描述。但通常为了处理问题的方便,对事物按层进行分解,使得处于顶层(上层)的抽象事物具有处于底层(下层)抽象事物的共同特征,而处于底层的抽象事物除了具有顶层抽象事物的所有特征外,还具有本身所专有的特征。例如对于建筑物来说,它有施工单位、竣工日期等特征;而建筑物又可细分为房屋、桥梁和纪念塔等三类,它们除了具有建筑物的共同特征外,还各自具有自己的特征,如房屋有建筑面积,桥梁有建筑高度、宽度和长度,纪念塔有塔高和形状等特征;房屋又可细分为平房和楼房两类,平房和楼房除了具有房屋的共同特征外,还具有自己的特征,如平房有庭院面积,楼房有楼层数和电梯数等特征;楼房又可细分为办公楼和居民楼两类,它们除了具有楼房的公共特征外,办公楼还具有值班电话,居民楼还具有居民户数和居住人数等特征。可用图9-1表示它们之间的层次关系。
建筑物
房屋 桥梁 纪念塔
平房 楼房
办公楼 居民楼
图1 建筑物类层次图
在C++中允许定义类之间的继承关系。当一个类继承另一个类时,这个类被称为继承类、派生类或子类,另一个类被称为被继承类、基类或父类。子类能够继承父类的全部特征,包括所有的数据成员和成员函数,并且子类还能够定义父类所没有的、属于自己的特征,即自己的数据成员和成员函数。通过类的继承关系,使得一些类的代码可以为定义另一些类所重用,避免了代码的重新书写和调试,能够开发出便于维护和扩充、可靠性高的软件。所以,类的继承是软件开发中的一项重要技术。
1. 派生类定义的格式
class 派生类名 : 基类表 {成员表};
它同一般类的定义格式大体相同,只是在类名和左花括号之间增添了一个冒号和一个基类表。
语句定义中的派生类名是新定义的类类型标识符,它是基类表中所给基类的一个派生类;基类表中包含有一个或多个用逗号分开的类项,每个类项为一个已被定义的作为基类使用的类名,它前面可以带有继承权限指明符用以规定被继承的权限;花括号内的成员表是为该派生类定义的数据成员和成员函数的列表。
基类表中每个基类名前面可以使用的继承权限指明符仍为类成员表中为规定成员访问权限所使用的指明符public,private或protected,它们分别表示派生类公用(公有)、私有或保护继承该基类。若一个基类名前没有使用任一指明符也是允许的,对于class定义语句来说,隐含为private指明符,即派生类私有继承该基类,对于struct定义语句来说,隐含为public指明符,即派生类公用继承该基类,这种规定与定义它们的成员时缺省的访问权限的规定完全相同。
当一个基类被派生类公用继承时,则基类中的所有public成员也同时成为派生类中的public成员,基类中的所有protected成员也同时成为派生类中的protected成员,基类中的所有private成员不转换为派生类中的任何成员,仍作为基类的私有成员保留在基类中,也可以说同时保留在派生类中,因为派生类继承了基类中的所有成员。由于基类的私有成员没有同时成为派生类中的成员,所以派生类的成员函数无法直接访问它们,只能通过基类提供的公用或保护成员函数来间接访问。当然,若把派生类定义为基类的友元,则可直接访问其私有成员。
当一个基类被派生类私有继承时,则基类中的所有public成员和所有protected成员将同时成为派生类中的private成员,基类中的所有private成员仍只作为基类的私有成员存在,不转换为派生类中的任何成员。
当一个基类被派生类保护继承时,则基类中的所有public成员和所有protected成员将同时成为派生类中的protected成员,基类中的所有private成员同上述两种继承一样,仍只能作为基类的私有成员存在,不是派生类的成员。
无论任何一个类,无论它的成员是靠继承而来的,还是自己定义的,都属于自己的成员,该类的成员函数能够访问该类中具有任何访问权限的成员,同时也能够访问其他类中具有公用访问权限的成员和类外的对象与函数,不能访问其他类中的保护成员和私有成员,即使其他类是自己继承的类,或自己成员所属的类也是如此。
在一个派生类中,其成员由两部分组成,
您可能关注的文档
最近下载
- JIS G 4313-1996 弹簧用冷轧不锈钢带(中文版).pdf VIP
- 针灸学课件课件.ppt VIP
- 2024年温岭市交通旅游集团有限公司招聘笔试真题汇总.docx VIP
- 小升初数学试题真题汇编-填空题50道精品及答案.pdf VIP
- 小型宾馆安全保卫人员职责.docx VIP
- 唯美中国风名著导读《红楼梦》读书分享ppt.pptx VIP
- 2025山东泰安市泰山城建投资集团有限公司一般工作人员招聘12人笔试备考题库及答案解析.docx VIP
- 2024年陕西华山旅游集团有限公司招聘笔试真题汇总.docx VIP
- 安全台帐范本.pdf VIP
- 05G359-3悬挂运输设备轨道标准图集.pdf VIP
文档评论(0)