关系 | 作用 |
---|---|
USES-A:依赖关系 | A类会用到B类,这种关系具有偶然性,临时性。但B类的变化会影响A类。这种在代码中的体现为: A类方法中的参数包含了B类。关联关系 A类会用到B类,这是- -种强依赖关系,是长期的并非偶然。在代码中的表现为: A类的成员变量中含有B类。 |
HAS-A | 聚合关系,拥有关系,是关联关系的一种特例,是整体和部分的关系。比如鸟群和鸟的关系是聚合关系,鸟群中每个部分都是鸟。 |
IS-A | 表示继承(抽象继承abstract class)。父类与子类,这个就不解释了。 |
还有一种关系 | 组合关系也是关联关系的一种特例,它体现-种contains-a的关系,这种关系比聚合更强,也称为强聚合。它同样体现整体与部分的关系,但这种整体和部分是不可分割的。 |
abstract class表示的是"is a"关系,interface表示的是"like a"关系
关系 | 作用 |
---|---|
is-a | 理解为是一个,代表继承关系。如果A is-a B,那么B就是A的父类。 |
like-a | 理解为像一个,代表组合关系。如果A likea B,那么B就是A的接口。 |
has-a | 理解为有一个,代表从属关系。如果A hasa B |
关系 | 英文直译 |
---|---|
A is-a B | A是一个B,表示A是B的子类,这样A才能称作是一个B, |
A like-aB | A好像是一个B,表示A实现了B这个接口, |
Ahas-a B | A有一个B,表示A是B的父类,这样才能称作A有一个B |
(Gadget继承 了Widget)的存在,即父类中的非私有成员(Sprocket)
子类都默认拥有。
class Widget { Sprocket s; }
class Gadget extends Widget {
Spring s; }
(Sprocket和Spring)子类都拥有。
class Widget { }
class Gadget extends Widget {
Spring s1;
Sprocket s2; }
(Gadget继承 了Widget)的存在,即父类中的非私有成员(Sprocket和
Spring)子类都默认拥有。
class Widget {
Sprocket s1;
Spring s2; }
class Gadget extends Widget {}
表明了Widget继承了Gadget,并且Widget具有对Spring的引用。
class Gadget { Spring s; }
class Widget extends Gadget {
Sprocket S; }