面向对象程序设计 3-系统的特征.ppt

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

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)取代继承 (2)包含继承 (3)受限继承 (4)特化继承 从上面继承分类的两个方面可以看出, 所有的继承关系都存在类与类之间,而且都 具有两类不同的性质,一类是用来描述继承 源的;另一类是用来描述继承内容的。 3.2.3 继承与封装的关系(二者是否矛盾)   两个概念并没有实质冲突,封装性主要指对 象的封装性,即将数据和操作封装成为一个整 体。引入继承机制后,对象依然是封装得很好的 实体,对象之间通讯的途径只有发送消息。类机 制是一种静态机制,对象仍然是一个类的实例也 许是基类的实例,也许是派生类的实例。从另一 角度,二者具有一定相似性,它们都是共享代码 的手段。继承是静态共享,封装是动态共享。 3.2.4 继承与委托的关系    在面向对象系统中,每个操作元素都是一个 对象,为了减少一个操作的实现代码,我们尽 量使用向其它对象发送消息而不再重写代码, 这就是委托的意义。 二者都具有节省代码的作用,继承定义的类 可有继承其它类的能力;委托则是一个对象可 以依赖其它对象为它完成某些操作。 相同点:都具有节省代码的作用,继承定义的类 可有继承其它类的能力;委托则是一个对象可以 依赖其它对象为它完成某些操作。 不同点:性质不同的两种关系。继承是静态关系 ,其基本功能是将功能相关的对象进行特定归类 表示,使得特殊类别的对象有继承较为一般类别 对象的能力;而委托则是一种既可以静态定义也 可以动态定义的更复杂的关系,其基本功能是将 一个对象的工作分配到与之相关的更特殊的对象 上。 3.2.7 面向对象系统的继承性 引入继承机制的优点: 1)能清晰体现相关类间的层次结构关系。 2)能减小代码和数据的重复冗余度,大大增加 程序的重用性。 3)能通过增强一致性来减少模块间的接口和界 面,大大增加程序的易维护性。 4)继承是能自动传播代码的有力工具。 5)继承还是在一些比较一般的类的基础上构造 、建立和扩充新类的最有效的手段。 说明: 1)在面向对象系统中,继承性不仅作用在对操 作的继承,还作用在对数据内容的继承,即具有 结构特性的继承性,又具有行为特性的继承性。 2)派生类对从基类继承的数据成员和函数成员 的访问权:基类的成员若处在保护段和公有中, 派生类是可以访问的;若基类的成员处在私有段 中,派生类是无权访问的。 3.3 多态性 多态性是面向对象系统中的又一重要特性, 它描述的是同一个消息可以根据发送消息对象 的不同采用多种不同的行为方式。 3.3.2 虚函数的概念   虚函数使用户在一个类等级中可以使用相同 函数的多个版本,每一个版本均属于类等级中的 不同的类,究竟使用的是哪一个特定的版本需要 在运行中决定。   在C++语言中,虚函数在定义时,要在基 类的此函数声明前加上关键字virtual,在派生类 中可重新给出定义。虚函数的各个版本中,其返 回值、函数参数的个数和类型必须是一致的。至 于程序执行过程中究竟运行的是基类的版本,还 是某个派生类的版本,这要看当时发送此消息的 对象是属于哪一类的。 3.3.3 抽象类的概念 作用:抽象类的作用在于将许多有关的类组织 在一起,提供一个公共的基类,而那些被它组

您可能关注的文档

文档评论(0)

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

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档