- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
.
继承、实现、依赖、关联、聚合、组合的联系与区别
分别介绍这几种关系:
继承
指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可
以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在 Java
中此类关系通过关键字 extends 明确标识,在设计时一般没有争议性;
实现
指的是一个 class 类实现 interface 接口(可以是多个)的功能;实现是类与接口之间最常
见的关系;在 Java 中此类关系通过关键字 implements 明确标识,在设计时一般没有争
议性;
依赖
可以简单的理解, 就是一个类 A 使用到了另一个类 B ,而这种使用关系是具有偶然性的、 、
临时性的、非常弱的,但是 B 类的变化会影响到 A ;比如某人要过河,需要借用一条船,
此时人与船之间的关系就是依赖; 表现在代码层面, 为类 B 作为参数被类 A 在某个 method
方法中使用;
.
.
关联
他体现的是两个类、 或者类与接口之间语义级别的一种强依赖关系, 比如我和我的朋友; 这
种关系比依赖更强、 不存在依赖关系的偶然性、关系也不是临时性的, 一般是长期性的,而
且双方的关系一般是平等的、关联可以是单向、双向的;表现在代码层面,为被关联类 B
以类属性的形式出现在关联类 A 中,也可能是关联类 A 引用了一个类型为被关联类 B 的全
局变量;
聚合
聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即 has-a 的关系,此
时整体与部分之间是可分离的, 他们可以具有各自的生命周期, 部分可以属于多个整体对象,
也可以为多个整体对象共享; 比如计算机与 CPU 、公司与员工的关系等; 表现在代码层面,
和关联关系是一致的,只能从语义级别来区分;
组合
组合也是关联关系的一种特例, 他体现的是一种 contains-a 的关系,这种关系比聚合更强,
也称为强聚合; 他同样体现整体与部分间的关系, 但此时整体与部分是不可分的, 整体的生
命周期结束也就意味着部分的生命周期结束; 比如你和你的大脑; 表现在代码层面, 和关联
关系是一致的,只能从语义级别来区分;
对于继承、 实现这两种关系没多少疑问, 他们体现的是一种类与类、 或者类与接口间的纵向
关系; 其他的四者关系则体现的是类与类、或者类与接口间的引用、横向关系,是比较难区
分的, 有很多事物间的关系要想准备定位是很难的, 前面也提到, 这几种关系都是语义级别
的,所以从代码层面并不能完全区分各种关系;
但总的来说,后几种关系所表现的强弱程度依次为: 组合 聚合 关联 依赖;
.
.
聚合跟组合其实都属于关联 只不过它们是两种特殊的关联 因为本是同根生 所以它们之间
难免会有相似之处 下面让我们一起来看一下它们之间有何不同
聚合与组合的概念相信不用我在此赘述大家就已经了解了 下面直接上例子
程老师的 《大话》里举大那个大
原创力文档


文档评论(0)