- 1、本文档共60页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
类继承 考虑方法contains: 继承的范例2 numberOfElements 类继承 利用继承性: 继承的范例2 numberOfElements 类继承 用UML表达类模型 继承的范例2 类继承 整理后UML类模型 继承的范例2 aBag aLinkedList aArrayList 这些对象有哪些操作? 类继承 继承的范例2 aLinkedList aArrayList elementAt在两个对象中的实现是一样的吗? List类的elementAt如何实现? 类继承 继承的范例2 其实这是一个抽象方法。 类继承 使用抽象类是人类智慧的一种本能。 你会给很多水果削掉果皮,自然而然产生“削果皮”的概念,产生了 抽象类Fruit 抽象方法peel 假如给一个Fruit的对象发送peel消息,将会怎样? 假如给List对象发送一个contains消息,将会怎样? 抽象类 类继承 抽象类的来源 抽象类 苹果 橙子 梨 水果 当不承认水果与苹果、橙子、梨有继承关系的时候 承认射向“苹果” 类、“橙子” 类和“梨”类的对象都射向“水果”类。 对象 类 分 界 类继承 建立继承的动机: 所有射向“苹果” 类的对象都射向“水果”类 抽象类 苹果 水果 对象 类 分 界 类继承 建立继承的动机: 增加“苹果” 与“水果” 的继承关系 抽象类 苹果 水果 对象 类 分 界 减少了黑线,减轻了知识系统的负担。 每一个对象还是到达“苹果”和“水果” 类继承 建立继承的动机: “水果”成了抽象类 抽象类 苹果 水果 对象 类 分 界 没有直接用“黑线”投到“水果” 的对象。 橙子 梨 类继承 产生抽象方法 抽象类 苹果 对象 类 分 界 削苹果 削苹果 类继承 抽象方法的产生: 抽象类 苹果 对象 类 分 界 削苹果 削苹果 削苹果 削橙子 橙子 水果 削水果 更和谐 类继承 抽象方法的产生: 抽象类 苹果 削苹果 水果 削水果 子类 子类方法 超类/父类 超类方法 人类思维的习惯 类继承 抽象类由于类结构的形成过程中丢弃了具体细节 可能含有无法被程序实现的方法 称为抽象方法 请思考:抽象方法既然无法执行,有什么用处呢? 抽象类 类继承 含有抽象方法的类 方法包括 方法名 方法参数表 方法体(代码) 抽象方法 没有方法体 无法执行 抽象类无法实例化 抽象类和抽象方法 类继承 UML中用斜体字表示抽象类 如果不能使用斜体字,在类名左边或上方注明{abstract} 抽象类和抽象方法 有方法体(代码)的方法 对抽象方法的调用,被自动代替为对具体方法的调用。 请思考内在的好处。 类继承 在Java中定义抽象类: public abstract class List { public abstract boolean contains(Object o); } 错误的语句:new List(); 只有具体的类能够被实例化,如果调用抽象方法,最终一定会调用一个具体类的“重定义方法”。 抽象类和抽象方法 类继承 重定义方法与类模型 重定义方法 Collection List ArrayList contains 相同的方法名 contains contains 相同的参数表 不同的方法体 相同的返回值类型 类继承 重定义方法 重定义方法 List ArrayList elementAt elementAt 这个关系意味着什么? 两个方法用来处理同一个消息 类继承 重定义方法 重定义方法 elementAt 这里需要安装一个List的对象 anArrayList anLinkedList elementAt elementAt 消息传递到实际装入的对象上 类继承 重定义方法 接受消息elementAt 这里可以安装List的对象 设计时 编译器解决 运行时 动态绑定 anArrayList anLinkedList elementAt 类继承的规则决定可安装的对象。 重命名方法的规则 保证设计的消息能够被动态绑定的对象处理。 属性也可以重定义 类继承 一个Stack对象 实现Stack(继承) aStack …… Collection 一组对象 对象 类 分 界 Stack 类继承 实现Stack(继承) Collection 一组对象 Stack 是否有序? 类继承 实现Stack(继承) Collection 一组对象 Stack 序映射 List 但List是一个抽象类,继承List没有重用到太多代码。 类继承 实现Stack(继承) Collection 一组对象 Stack 序映射 List 继承LinkedList或ArrayList都可以获得实际的可重用的代码 LinkedList 类继承 一个Stack
您可能关注的文档
最近下载
- 《2023年甘肃省职业院校技能大赛职业英语技能赛项职业英语能力测试模块试题口语决赛样题》.pdf
- 建筑工程建筑面积计算规范GBT50353-2022[13].pdf
- JB/T 9628-1999 汽轮机叶片 磁粉探伤方法.pdf
- 0i-TF PLUS车床操作说明书.pdf
- 陈传明管理学笔记1.马工程——总论.pdf
- 06J925-2 压型钢板、夹芯板屋面及墙体建筑构造(二).docx VIP
- 《高速公路基础设施数字化建设数据标准》.pdf VIP
- 计算机组装与维护 知识点整理.pdf VIP
- 《员工满意度研究国内外文献综述》3900字.docx VIP
- 勤俭节约主题班会 主题班会.ppt VIP
文档评论(0)