| 关系 | 作用 |
|---|---|
| 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; }
本文详细解析了面向对象编程中的四种基本关系:USES-A、关联、聚合和组合,以及它们在代码中的体现。USES-A表示临时依赖,关联表示强依赖,聚合和组合则体现了整体与部分的关系。此外,还探讨了抽象类(IS-A)和接口(LIKE-A)在继承和实现中的角色。通过对这些概念的理解,开发者可以更好地设计和组织代码结构。
1万+

被折叠的 条评论
为什么被折叠?



