第09章-天津大学计算机科学与技术学院.pptVIP

第09章-天津大学计算机科学与技术学院.ppt

  1. 1、本文档共39页,可阅读全部内容。
  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文档。上传文档
查看更多
第09章-天津大学计算机科学与技术学院

第九章 多态 概要 绑定 考虑下面的方法调用: obj.doIt(); 绑定 指将一个方法调用同一个方法定义连接到一起 根据绑定时期的不同,可分为 早期绑定,静态绑定 程序运行之前执行绑定(编译期间) 晚期绑定,动态绑定 也叫作“延迟绑定”或“运行时绑定” 基于对象的类别,在程序运行时执行绑定 动态绑定执行效率比早期绑定低,但是动态绑定为程序设计提供了灵活性 实现动态绑定:通过多态引用 多态 多态这个术语的字面意思是 “具有多种形式 多态引用:某个引用型变量能够指向不同类型的对象。 Mammal pet; Horse secretariat = new Horse(); pet = secretariat; Animal creature = new Horse(); creature.move(); 一个Object引用可以指向任何对象 概要 引用和继承 对象引用变量: 对象引用变量可以指向其声明的类的对象 还可以指向任何因继承而发生关系的类的对象 例如, 如果 Holiday类派生了一个Christmas类, 那么 Holiday类的对象引用变量可以用于指向一个Christmas类的对象 引用和继承 给一个父类引用变量pet赋值一个子类对象可以认为是一个扩展类型转换, 可以通过简单的赋值语句实现 给子类引用也可以赋值一个父类对象,这被认为是缩小类型转换,必须采用强制类型转化 扩展类型转换在程序设计中常常使用 多态与继承 对象的类型决定了调用的方法而不是引用的类型 假定Holiday类有一个 celebrate方法, Christmas类覆盖了此方法 现在考虑下面的调用: day.celebrate(); 如果day指向一个Holiday对象, 那么它将调用Holiday类的 celebrate方法;如果它指向一个Christmas对象,那么它将调用Christmas类的方法 多态与继承 考虑下面的类层次结构: 多态与继承 我们来看书上的例子: 参考 Firm.java (第329页) 参考 Staff.java (第330页) 参考 StaffMember.java (第331页) 参考 Volunteer.java (第332页) 参考 Employee.java (第333页) 参考 Executive.java (第334页) 参考 Hourly.java (第335页) 概要 多态与接口 接口名可以作为引用型变量的类型: Speaker current; Current引用可以指向任何实现Speaker接口的类的对象, 例如:Philosopher类实现了Speaker接口,那么可以Philosopher类的一个对象赋给一个Speaker类型的引用。 current = new Philosopher(); 如果:current.speak(); 执行的是Philosopher类定义的speak方法。 多态与接口 如果有两个类Philosopher和Dog, 他们都实现了Speaker接口,它们提供了speak 方法的不同版本。 Speaker guest = new Philospher(); guest.speak(); guest = new Dog(); guest.speak(); 第一次Speak方法调用Philosopher的speaker()方法 第二次调用Dog的speaker()方法。 概要 排序 排序是将一组元素调整为有序排列的过程 例如: 将一组观察结果按照数值递减排序 将一组姓名按照姓氏字母排序 有许多排序算法,但是这些算法效率有所差别 我们将学习两种典型的排序算法: 选择排序 插入排序 选择排序 选择排序具体步骤: 找到数列中的最小值 与数列中第一个位置的值交换 扫描数列其余值,找到最小值 再将此值与队列中第二个位置中的值交换 重复上述过程,直到数列最终成为从小到大排列的有序列表 选择排序 举例: original: 3 9 6 1 2 smallest is 1: 1 9 6 3 2 smallest is 2: 1 2 6 3 9 smallest is 3: 1 2 3 6 9 smallest is 6: 1 2 3 6 9 每次,查找“剩余队列”中的最小值,然后与“下一个位置”的值交换 交换 选择排序算法的过程包括两个值的交换过程 交换过程需要三条赋值语句和一个临时存储变量: temp = first; fir

文档评论(0)

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

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

1亿VIP精品文档

相关文档