Public void Grownup() {
Water water = null;
}
}
备注:Water类是 Animal类的某个方法中的变量,则Animal类可以调用它。
注意:1 Water类的生命期,它是当Animal类的GrounUp方法被调用的时候,才被实例化
2 持有Water类的是Animal的一个方法而不是Animal类,这点是最重要的
或者
Public Animal {
Public Water Grownup(Water water) {
return null;
}
}
备注:Water类是作为Animal类中某个方法的参数或者返回值
注意: Water类被Animal类的一个方法持有。生命期随着方法的执行结束而结束。
(也就是指源类方法持有了目标类)
2.关联 Has a
例如:water关联climate
代码(climate类省略):Public class Water {
public Climate m_Climate;
public Water(){}
}
备注:Water类和Climate类单向关联,则Water类称为源类,Climate类称为目标类。源类了解目标类的所有的属性和方法,但目标类 并不了解源类的信息。(也就是指源类持有了目标类的成员变量)
双向关联则各自持有。
3.聚合和组合
例如:雁群和大雁(聚合) 大雁和翅膀(组合)
代码:Public class GooseGroup {
public Goose goose;
Public GooseGroup(Goose goose) {
this.goose = goose;
}
}
Public class Goose {
public Wings wings;
public Goose() {
wings = new Wings();
}
}
备注:◎构造函数不同
聚合类的构造函数中包含了另一个类 作为参数。
雁群类(GooseGroup)的构 造函数中要用到大雁(Goose)作为参数传递进来。大雁类(Goose)可以脱离雁群类而独立存在。
组合类的构造函数中包含了另一个类 的实例化。
表明大雁类在实例化之前,一定要先实 例化翅膀类(Wings),这两个类紧密的耦合在一起,同生共灭。翅膀类(Wings)是不可以脱离大雁类(Goose)而独立存在
◎信息的封装性不同
在聚合关系中,客户端可以同时了解雁群类和大雁类,因为他们都是独立的
在组合关系中,客户端只认识大雁类,根本就不知道翅膀类的存在,因为翅膀 类被严密的封装在大雁类中。
4.泛化 Is a
例如:狗类继承动物类
代码:略
备注:泛化也称继承,子类将继承父类的所有属性和方法,访问权限根据访问修饰符确定。