【Java学习笔记】类之间的关系
2017-12-09 18:30
218 查看
一、纵向关系
1.泛化
【释义】:
表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。
一般化的关系是从子类指向父类的,与继承或实现的方法相反
【具体表现】:
父类 父类实例 = new 子类()
【代码体现】:
二、横向关系
强弱关系:依赖<关联<聚合<组合
1.依赖
【释义】:
…… uses a……
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系
【具体表现】:
依赖关系表现在局部变量,方法的参数以及对静态方法的调用
【现实例子】:
比如拧螺丝,要借助(也就是依赖)螺丝刀来帮助完成
【代码体现】:
2.关联
【释义】:
……has a……
对于两个相对独立的对象,当一个对象的实例与另一个对象的实例存在固定的对应关系时,这两个对象之间为关联关系
关联的2个对象彼此间没有任何强制性的约束,只要二者同意,可以随时解除关系或是进行关联,他们在生命周期上没有任何约定
谁都可以离得开谁
【具体表现】:
关联关系是使用成员变量来实现
【现实例子】:
比如客户和订单,每个订单对应特定
4000
的用户,每个用户对应一些特定的订单;
再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司
【代码体现】:
3.聚合
【释义】:
……owns a……
当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚合关系。
聚合关系是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系
比如图书馆和书,没有书的图书馆依旧是图书馆
【具体表现】:
聚合关系也是通过成员变量来实现的
【现实例子】:
我和我的手机
【代码体现】:
4.组合
【释义】:
……is a part of……
它直接要求包含对象对被包含对象的拥有以及包含对象与被包含对象生命周期的关系。
整体不存在,部分一定不存在;而部分不存在,整体可能存在
部分必须创建于整体之后,销毁于整体之前
【具体体现】:
聚合关系也是通过成员变量来实现的
【现实例子】:
人和心脏,心脏是人体组成部分,缺了心脏人不能活
人和阑尾,阑尾也是人体组成部分,摘除后也能活
【代码体现】:
1.泛化
【释义】:
表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。
一般化的关系是从子类指向父类的,与继承或实现的方法相反
【具体表现】:
父类 父类实例 = new 子类()
【代码体现】:
class Animal{} class Tiger extends Animal{} public class Test{ public void test(){ Animal anAnimal = new Tiger(); } }
二、横向关系
强弱关系:依赖<关联<聚合<组合
1.依赖
【释义】:
…… uses a……
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系
【具体表现】:
依赖关系表现在局部变量,方法的参数以及对静态方法的调用
【现实例子】:
比如拧螺丝,要借助(也就是依赖)螺丝刀来帮助完成
【代码体现】:
public class Person{ //打电话 public void call(Phone phone){ phone.call(); } }
2.关联
【释义】:
……has a……
对于两个相对独立的对象,当一个对象的实例与另一个对象的实例存在固定的对应关系时,这两个对象之间为关联关系
关联的2个对象彼此间没有任何强制性的约束,只要二者同意,可以随时解除关系或是进行关联,他们在生命周期上没有任何约定
谁都可以离得开谁
【具体表现】:
关联关系是使用成员变量来实现
【现实例子】:
比如客户和订单,每个订单对应特定
4000
的用户,每个用户对应一些特定的订单;
再例如公司和员工,每个公司对应一些特定的员工,每个员工对应一特定的公司
【代码体现】:
public class Employee{ public void startWorking(){ //开始工作 } } public class Company{ private Employee employee; public Employee getEmployee(){ return employee; } public void setEmployee(Employee employee){ this.employee = employee; } public void run(){ //公司运作 employee.startWorking(); } }
3.聚合
【释义】:
……owns a……
当对象A被加入到对象B中,成为对象B的组成部分时,对象B和对象A之间为聚合关系。
聚合关系是关联关系的一种,是较强的关联关系,强调的是整体与部分之间的关系
比如图书馆和书,没有书的图书馆依旧是图书馆
【具体表现】:
聚合关系也是通过成员变量来实现的
【现实例子】:
我和我的手机
【代码体现】:
public class Person{ private Phone myPhone; public void call(){ myPhone.call(); } }
4.组合
【释义】:
……is a part of……
它直接要求包含对象对被包含对象的拥有以及包含对象与被包含对象生命周期的关系。
整体不存在,部分一定不存在;而部分不存在,整体可能存在
部分必须创建于整体之后,销毁于整体之前
【具体体现】:
聚合关系也是通过成员变量来实现的
【现实例子】:
人和心脏,心脏是人体组成部分,缺了心脏人不能活
人和阑尾,阑尾也是人体组成部分,摘除后也能活
【代码体现】:
public class Human{ private Heart myHeart; public CPU getHeart(){ return myHeart; } public vois setHeart(Heart myHeart){ this.myHeart = myHeart; } public Human(){ myHeart = new Heart(); } }
相关文章推荐
- java 学习笔记——类之间的关系之封装、继承与多态的详解
- java学习笔记----类与类之间的关系
- 10.笔记JAVA框架学习——Bean之间关系
- [原创]java WEB学习笔记81:Hibernate学习之路--- 对象关系映射文件(.hbm.xml):hibernate-mapping 节点,class节点,id节点(主键生成策略),property节点,在hibernate 中 java类型 与sql类型之间的对应关系,Java 时间和日期类型的映射,Java 大对象类型 的 映射 (了解),映射组成关系
- Java学习笔记45:Java 线程与主线程之间的变量关系
- 【学习笔记11】java面向对象-接口与类、接口与接口之间的关系
- JAVA学习笔记——增强Date与String之间的相互转换
- 黑马程序员之ASP.NET学习笔记:.NET,ASP.NET,C#,VisualStudio之间的关系是什么?
- JAVA学习笔记——Date与String之间的相互转换
- 黑马程序员_学习笔记23_ASP.NET中aspx 和 aspx.cs之间的关系
- java学习笔记--工厂模式、实体关系
- Struts2学习笔记04----ActionContext、ServletActionContext、ValueStack之间的关系
- 关于线程与进程之间的关系,今天学习了一下,在这做一下笔记。
- (转)有关Auto encoder 和Denoising auto encoder分别和PCA之间的关系(学习笔记)
- ListView,CursorAdapter,ContextMenu之间的映射关系学习笔记。
- MFC学习笔记之OnPaint和OnDraw之间的关系
- 学习java多线程的笔记3-使用BlockingQueue阻塞队列来模拟两个线程之间的通信
- WCF学习笔记:svc、config和code文件之间的关系
- 微软企业库4.1学习笔记(二)各功能之间的依赖关系以及对象创建
- 我的学习笔记005--常见web前台技术之间的关系html,css,javascript...