- 1、本文档共40页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[司法考试]第05讲-继承
第五讲 继 承 软件复用及其途径 继承:泛化的实现 ★★ 继承中的对象初始化与收尾 ★★★ 多继承 Object类 5.1 软件复用及其途径 软件的可复用性是评价软件质量的重要因素 最常见的软件复用形式是源代码 软件复用的内容不仅仅是源代码。 继承与多态性是实现代码级软件复用的有效途径 实现代码复用的两条途径 代码复用的基本单位 ── 类∕接口 复用类与接口的两条途径 ① 聚合(aggregation)或合成(composition) ② 泛化(generalization)或继承(inheritance) 类复用 ── 合成方式 UML图示 二元关系:带有实心菱形表示整体(whole),另一方表示部分(part)。 建模思想 聚合或合成:是日常生活中 has-a 或 part-of 关系的建模。 has-a ? 是从“整体”的角度出发。 part-of ? 是从“部分”的角度出发。 类复用 ── 继承方式 UML图示 二元关系:带有三角形一方表示父类,另一方表示子类。 ? (直接)父类、祖先类、(直接)子类、派生类(后代类)、... 建模思想 泛化或继承是日常生活中 is-a 关系的实现。 继承在面向对象设计中的地位 是面向对象设计的重要特征。 ? 封装、信息隐藏、数据抽象、多态性、... 是运行时多态性的基础。 ? 子类型(动态类型+静态类型) ? 绑定(动态绑定+静态绑定) 5.2 继承:泛化的实现 日常生活中的is-a 关系 日常生活中十分常见: ? 国光苹果是一种苹果;苹果又是一种水果。 ? 鸭梨是一种梨;梨也是一种水果。 这种知识组织方式的最大好处 ── 复用已有知识: ? 只需说明国光苹果与其他苹果(如秦冠、红富士)不同的特征。 ? 不必重述苹果的共同特征(如形状、颜色、营养、生长条件)。 从两个不同的角度理解 ① 特化(specialization): ? 国光苹果是苹果的一种特例;苹果是水果的一种特例。 ? 除水果的特征之外,苹果还有与其他水果相区别的特征是; 国光苹果也有与其他苹果相区别的特征。 ② 泛化(generalization): ? 苹果是国光、秦冠、红富士苹果共同特征的一种抽象;水果是苹果、梨、香蕉、橙的抽象。 ? 人类在认知活动中抽象出这些概念来组织知识;然后又利用这些概念来表达新的概念。 经典应用及成就 生物学家用七个主要层次对数以百万计的生物进行分类。 ? 界(kingdom) ? 门(phylum) ? 纲(class) ? 目(order) ? 科(family) ? 属(genus) ? 种(species) 继承机制 继承是is-a关系在程序中的实现 is-a关系:在问题空间中描述概念与概念之间的关系。 继承关系:在解空间中描述类与类之间的关系。 软件复用的思想 面向对象设计的一个重要指导原则是:不要每次都从头开始定义一个新的类,而是将这个新的类作为一个或若干个现有类的泛化或特化。 因为继承而新增了一种访问控制方式 原有的访问控制方式: private ? public 新的访问控制方式: private ? protected ? public 类型兼容 向上转换(upcasting):又称widening reference conversion。 ? S → T,S是T的子类(注意Object是所有类的父类!) ? 不需要运行时检测,允许隐式转换。 静态类型 vs 动态类型 静态类型:声明obj时的类型(在编译时确定的类型)。 动态类型:在运行时某一时刻与obj相关联的对象的类型。 ? 由于基本类型的静态与动态类型没有区别,故只需讨论引用类型。 动态类型必须是静态类型的子类型! 继承的设计模式 两种不同的继承模式 ① 重定义(overriding):仅重定义父类的操作而不引入新特征。 ② 扩充(extending):引入父类所没有的新特征。 ③ 实际应用通常是上述两种方式的结合。 重定义的继承模式(is-a) 扩充的继承模式(is-like-a) 5.3 继承中的对象初始化与收尾 子类继承了什么 子类继承了父类和所有成员,包括方法和变量(域) ? 构造方法并不是一个类的成员,所以没有被继承。 如何使用父类的构造方法 对象的初始化次序 先初始化父对象,再初始化对象本身 父对象的初始化: ? 缺省初始值、初始化表达式、初始化块、构造方法。 对象本身的初始化: ? 缺省初始值、初始化表达式、初始化块、构造方法。 注意类变量的初始化
您可能关注的文档
- [历史学]首都师范大学精品课程世界史题库部分试题.doc
- [历史学]陶瓷科技考古学7-xrd.ppt
- [历史学]领先千年的古代中国时尚.ppt
- [历史学]高 粱:我国新时期的国防建设和经济建设.doc
- [历史学]高三历史课件:春秋战国文化.ppt
- [历史学]近代史复习.ppt
- [可爱清新]PPT幻灯片背景图片可爱系列.ppt
- [可爱清新]变化率与导数3课时.ppt
- [可爱清新]优雅清新的PPT背景免费提供.ppt
- [历史学]阿拉伯.ppt
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江西省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年安徽省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年福建省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年广东省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年河南省高考英语试卷(含答案解析)+听力音频.docx
- 2024年湖北省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年湖南省高考英语试卷(含答案解析)+听力音频+听力原文.docx
- 2024年江苏省高考英语试卷(含答案解析)+听力音频+听力原文.docx
文档评论(0)