局部变量代码如下,一般指方法里面的局部变量
1. class B {} 2. class A { 3. public A() {} 4. public void method() { 5. B b = new B(); 6. } 7. }
静态方法的调用代码如下
1. class B { 2. public static void staticMethod() {} 3. } 4. class A { 5. public A() {} 6. public void method() { 7. B.staticMethod(); 8. } 9. }
返回值代码如下
class B {} class A { public A() {} public B method() { return null; } }
5、聚合(Aggregation)
整体与部分的关系,表示聚合在一起,部分可以离开整体而单独存在,车和轮胎是整体和部分的关系,轮胎离开车仍然可以存在。
聚合关系是关联关系的一种,是强的关联关系,关联和聚合在语法一样,须考察具体的逻辑关系。
箭头及指向:带空心菱形的实心线,菱形指向整体
代码实现和上面的关联是一样的。
6、组合(Composition)
是整体与部分的关系,但部分不能离开整体而单独存,比如人的肺和人体,肺不能离开人单独存在,有人肺在人体才能存活
箭头指向:带实心菱形的实线,菱形指向整体
组合关系是关联关系的一种,是比聚合关系还要强的关系
类图如下
代码实现和上面的关联是一样的。
二、依赖和关联之间的区别
关联是“HAS”关系,依赖是“USE”关系
A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关系。
A类依赖B类,指的是B的对象作为A类的方法形式参数存在,称为“use”关系。一般也包括函数参数、局部变量、返回值类型和静态方法调用这四种场景。
生命周期不同
如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁,所关联的B类对象也被销毁。即只要A类对象存在,B类对象就存在。
如果A类依赖B类,那么只有当A类对象调用到相应方法时,B类对象才被临时创建,方法执行结束,B类对象即被回收,A类和B类之间的依赖关系是一种瞬时的关系。
三、关联和组合和聚合之间的关系
组合和聚合都是关联关系的一种,只不够 组合 > 聚合 > 关联
四、各种关系的强弱顺序
依赖 < 关联 < 聚合 < 组合 < 实现 = 泛化(继承)