面向对象的程序设计chapter6.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象的程序设计chapter6,面向对象程序设计,c面向对象程序设计,java面向对象程序设计,面向对象化程序设计,面向对象的程序设计,面向对象程序设计教程,面向对象程序设计pdf,面向对象程序设计语言,面向对象程序设计思想

第6章 运行时的多态性和抽象类 主要内容 面向对象的重要特征:多态性 运行时的多态性 抽象类 设计举例 6.1 面向对象的重要特征:多态性 问题引入 例子: 每年在加薪的时候,调用所有雇员的服务 PayRaise(),包括行政人员。 行政人员的加薪计算应该与其余雇员不同。 6.1 面向对象的重要特征:多态性 面向对象技术使用什么样的机制处理? 每当请求行政人员的该服务时,子类“行政人员”有一个代替雇员的PayRaise方法的方法。 尽管这些方法是不同的,但它们完成相同的业务目的,把这种现象称为多态。 所调用的方法依赖对象的类。 6.1 面向对象的重要特征:多态性 多态性 多态性指同一个消息被不同类型的对象或相同类型的对象接收时产生不同的行为。 通俗地说,多态性是指用一个名字定义不同的函数,这些函数执行不同却类似的接口、多种方法。即用同样的接口访问功能不同的函数,从而实现多态性。 6.1 面向对象的重要特征:多态性 多态性的分类 重载多态性:函数重载和运算符重载 继承多态性:派生类 参数多态性:模板 运行时的多态性:是包含多态性的动态体现 强制多态性:类型转换 6.2 运行时的多态性 虚函数和运行时的多态性 基本概念 虚函数 C++语言中,前边标有关键字virtual的成员函数称做虚函数。 C++语言实现运行时的多态性的方法是使用虚函数。 滞后联编的标记是虚函数标记virtual。 6.2 运行时的多态性 虚函数和运行时的多态性 基本概念 运行时的多态性 指对一个类层次来说,同样一个成员函数的调用,如果程序中动态确定的对象不同,则调用结果不同。 指系统在运行时才具体确定对象所属类层次中的某个类,从而确定外部程序所发消息的匹配对象。 运行时的多态性与类的继承和虚函数有关,虚函数允许函数调用与函数体之间的联系在运行时才建立,即所谓的“动态链接”。 6.2 运行时的多态性 虚函数和运行时的多态性 虚函数的定义 在基类中声明虚函数的语句格式为: virtual 成员函数原型; 虚函数在派生类中重载 虚函数在派生类中被重载时,必须保持函数原型完全不变。 否则等同于普通函数的重载,不能实现动态联编。 重载时关键字virtual可以省略。 6.2 运行时的多态性 虚函数和运行时的多态性 虚函数的使用方法 设计一个类层次,并在类层次中定义一个或一个以上的虚函数。 在外部程序中定义基类的指针对象。 按照赋值兼容规则,程序中既可以把基类对象的地址(或指针值)赋给基类的指针对象,也可以把派生类对象的地址赋给基类的指针对象。 6.2 运行时的多态性 虚函数和运行时的多态性 虚函数的使用方法 当外部程序发送的消息是虚函数时,若此时基类指针对象指向基类的对象时,系统就调用基类中的成员函数;若此时基类指针对象指向派生类对象时,系统就调用派生类中的成员函数。 如果没有按照上述2)的方法在程序中动态改变基类的指针对象,则系统将按早期联编方式调用基类的成员函数。 6.2 运行时的多态性 虚函数和运行时的多态性 例1 虚函数的使用 6.2 运行时的多态性 虚函数和运行时的多态性 例2 虚函数举例,计算三角形、矩形和圆的面积。 6.2 运行时的多态性 6.2 运行时的多态性 6.2 运行时的多态性 说明: 虽然三个类计算面积的方法不同,但具有相同的界面接口:show_area(),显示了C++的“同一接口,多种方法”的多态性机制。 应用程序不必为每一个派生类编写功能调用。即“以不变应万变”,可大大提高程序的可复用性。 6.2 运行时的多态性 滞后联编 联编(binding, 绑定或束定) 联编是将一个标识符名和一个存储地址联系在一起。 对一个函数调用,要在编译时或在运行时确定将链接上相应的函数体的代码,这一过程称为函数联编(简称联编)。 C++的两种联编方式 早期联编(静态联编) 滞后联编(动态联编) 6.2 运行时的多态性 滞后联编 早期联编 早期联编是指在程序编译连接阶段进行的联编。传统的程序设计语言采用的都是早期联编。 早期联编支持的多态性称为编译时的多态性,也称静态多态性。 主要优点 执行速度快,效率高。(运行时开销仅仅是传递参数、执行函数调用、清除栈等)。 6.2 运行时的多态性 滞后联编 早期联编 在C++中,静态多态性主要通过重载函数实现。包括两种情况: 1)在一个类中说明的重载。 2)基类成员函数在派生类中重载。 参数有所差别的重载。 函数所带参数完全相同,只是属于不同的类。 6.2 运行时的多态性 滞后联编 滞后联编(动态联编) 在面向对象的语言中,联编是把每一条消息和相应对象的方法相结合。 滞后联编是指系统在运行时才根据当时具体的取值确定对象的具体类型,或匹配重载函数的具体某一个。 主要优点

文档评论(0)

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

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

1亿VIP精品文档

相关文档