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

封面 第6章 封装 章引言 6.1封装性 6.1.1 信息隐藏 6.1.2 封装与数据抽象 访问修饰符 6.2包 6.2.1 命名空间 1. package语句 2. import语句 import的语句有两种形式 福祸相依 类全名确定算法 6.2.2 类路径和第三方包 2. 第三方包 3. 打包 6.2.3 包级私有 被隐藏的子类/实现类 6.3 private修饰符 6.3.1 private 1. 访问限制适用于类层面 2. 成员变量私有化 虚拟的域 6.3.2 域的继承和隐藏 1. 域的继承 2. 域的隐藏 6.4 protected修饰符 6.4.1 正确访问protected成员 6.4.2 protected的语意 6.5 public修饰符 6.6依赖 6.6.1 继承是白箱复用 6.6.2 聚合与组合 委派 合成复用原则CRP 6.6.3 使用关系 D2 被使用 术语 修饰符public(公用的)为用户程序员界定了一个类的有限的接口,为所有客户程序提供服务。 一个.java文件只能够包含一个public(顶级)类型。可以在一个.java文件包含多个包级私有的类、可以没有public类型、可以在一个public类型中包括多个public内部类型。 如果类不可访问,其成员变量和方法(即使是public)也自然不能访问,但是包外可以观察到不可访问类的public方法被执行。 在[4.4.1 开放封闭原则]中,将依赖简单地划分为两种: 继承关系,子类依赖父类; 使用关系,客户类依赖服务类。 继承关系是一种强依赖/耦合关系。 脆弱的父类中说明,子类会限制父类安全演化的自由,也可能破坏父类的封装性。 而子类通过改写父类的方法并扩大其访问权限(特别是protected方法改写成public方法),破坏了父类的封装性,这正是[4.4.3 启发式条例]中强调子类应该继承抽象类或实现接口的原因。 对于作为成员变量的服务类,常常称客户类与服务类构成整体与部分的关系,即有一个(has_a)关系。 整体与部分关系通称为合成,有时候细分为聚合(aggregation)与组合(composition) 聚合表示整体对部分的弱包含,一个部分可以属于多个整体,而且它可以独立于整体存在。主机与移动硬盘 组合则带有很强的主从关系,是整体的生命期大于等于部分生命期的关联形式。链表和结点 从Java语言的角度,聚合与组合都是通过私有成员变量实现的,两者并无明显的差别。 需要注意的是,对于组合语意,程序员需要在清除整体类的同时,清除所有的部分类。 对象的聚合/组合是类继承之外的另一种功能复用技术。新的更复杂的功能可以通过合成各聚合/组合成员对象来获得。当整体类的对象接受一个服务请求时,它可以调用部分类的方法而最终完成该任务。 ★Favor polymorphic composition of objects over inheritance.优先使用对象的多态组合,而不是类继承。 客户类依赖服务类被通称为使用关系。 除了聚合与组合之外,使用关系包括(客户类的方法)实现所需的对于服务类的依赖,在一些书籍中将这种关系称为(狭义的)使用关系或依赖关系(uses_a)。 * * 严千钧 著 With Java BlueJ Object first PLP 清华大学出版社 6.1封装性 201 6.1.1 信息隐藏 6.1.2 封装与数据抽象 6.2包 202 6.2.1 命名空间 6.2.2 类路径和第三方包 6.2.3 包级私有 6.3 private修饰符 208 6.3.1 private 6.3.2 域的继承和隐藏 6.4 protected修饰符 211 6.4.1 正确访问protected成员 6.4.2 protected的语意 6.5 public修饰符 213 6.6依赖 214 6.6.1 继承是白箱复用 6.6.2 聚合与组合 6.6.3 使用关系 “整体性”……它既不表示某种神秘的实体,也不是我们无知的避难所, ——路德维希.冯.贝塔朗菲《生命问题》 封装(encapsulation)是指将对象的全部属性和方法包裹起来,形成一个不可分割的整体。作为一个整体,对象/类承担自己的职责、管理自己的内务。 为了限定有限的接口,类的设计者精心使用访问修饰符(Access modifier),对类的属性、方法的可访问性加以合理控制。 作为一个整体的类A,在其类体中会出现其他引用类型的标识符如B。其中一种典型的关系,是整体与部分的关系。 本章介绍封装性,以及访问修

文档评论(0)

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

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

1亿VIP精品文档

相关文档