封装性继承性多态性9.ppt

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

3.2.1 继 承 基本概念:继承所表达的是对象类之间的相交关 系。它使得某类对象可以继承另外一类对象的特 征和能力。 类间具有继承关系时应具有的特性: 1)类间具有共享特征(包括数据和程序代码的 共享); 2)类间具有细微的差别或新增部分(包括非共 享的程序代码和数据); 3)类间具有层次结构。 若类B继承类A时,则属于B中的对象便具有 类A的一切性质(数据属性)和功能(操作)。 称被继承类A为基类或父类,或超类;而称继承 类B为A的派生类或子类。 设 A 为基类, B 为派生类。 1. 共享性: 派生类具有基类所有特征, 即:A ? B 2. 区别性: 派生类不等于基类,即 A≠B 3. 层次性: 表示了类之间存在着上下关系 继承所具有的作用有两个方面:一方面 可以减少代码冗余;另一方面可以通过协调 性来减少相互之间的接口和界面。 3.2.2 继承的分类 1、从继承源上划分: 单继承和多继承。 2、从继承内容上划分: (1)取代继承: full + 0 (2)包含继承: full + more (3)受限继承: full - limited (4)特化继承: full + more 从上面继承分类的两个方面可以看出,所 有的继承关系都存在于类与类之间,而且都具 有两类不同的性质,一类是用来描述继承源; 另一类是用来描述继承内容的。 3.2.3 继承与封装的关系    两个概念并没有实质冲突,封装主要是针对 对象而言的;而继承则是针对类而言的。封装可 以是对单个对象的;而继承则是对多个类的。 两者也有一定的相似性,它们都是实现代码 共享的手段。因为类是静态机制,所以继承是静 态共享手段。而对象是类的实例,所以封装是动 态共享手段。 3.2.4 委托与继承的关系    在面向对象系统中,为了减少一个操 作的实现代码,应尽量向其它对象发送 消息而不要重写代码,这就是委托的意 义。 这意味着在定义对象的某个操作时, 要委托该操作涉及的其它对象完成部分 任务。 相同点:都具有节省代码的作用,继承定义的类 具有继承其它类的能力;委托则是一个对象可以 依赖其它对象为它完成某些操作。 不同点:它们是性质不同的两种关系。继承是静 态关系,其基本功能是将功能相关的对象进行特 定归类表示,使得特殊类别的对象有继承较为一 般类别对象的能力;而委托则是一种既可以静态 定义也可以动态定义的更复杂的关系,其基本功 能是将一个对象的工作分配到与之相关的更特殊 的对象上。 3.2.4 面向对象系统的继承性 引入继承机制的优点: 1)能清晰体现相关类之间的层次结构关系。 2)能减小数据和代码的冗余度,增加程序的重 用性。 3)能通过增强一致性来减少模块间的接口, 增加程序的易维护性。 4)继承是自动传播代码的有力工具。 5)继承是在一般类基础上构造、建立和扩充新 类的最有效手段。 两点说明: 1)在面向对象系统中,继承性不仅作用于操作 还作用于数据内容,即派生类在继承基类的结构 特性的同时还继承其它类的行为特性。 2)派生类可以访问基类中处于保护段和公有段 的成员函数;但无权访问基类中处于私有段中的 成员函数。 多态性是面向对象系统中 的重要特性,它描述的是同一 个消息可以根据发送消息对象 的不同而采用多种不同的行为 方式。 3.3.2 虚函数的概念   虚函数使用户在一个类等级中可以使用相同 函数的多个版本,每一个版本均属于类等级中的 不同的类,究竟使用的是哪一个特定的版本需要 在运行中决定。   在C++语言中,虚函数在定义时,要在基 类的此函数声明前加上关键字virtual,在派生类 中可重新给出定义。虚函数的各个版本中,其返 回值、函数参数的个数和类型必须是一致的。至 于程序执行过程中究竟运行的是基类的版本,还 是某个派生类的版本,这要看当时发送此消息的 对象是属于哪一类的。(P234) 3.3.3 抽象类的概念 作用:抽象类的作用在于将许多有关联的类组 织在一起,提供一个公共的基类,那些被组织 在一起的具体类由该基类派生,它刻划了公有 行为的特征,并通过继承机制传送给它的派生 类。 功能:抽象类只描述与这类对象有关的协议和 协议部分消息的部分实现,完整实现由其派生 类具体完成。抽象类不能产生实例,只能建立 其派生类的对象。 实现:在C+ +语言中,通过在类中声明纯虚函 数的方法来定义抽象类。 3.3.4 面向对象系统的多态性 含义:当不同对象收到相同消息时产生不同的动 作。

文档评论(0)

haowendangqw + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档