面向对象 之 不能不知道的类间关系(下)关联、聚合、组合 C++与Java

本文是面向对象设计的下半部分,详细阐述了关联、聚合和组合三种类间关系。关联关系是类之间的一种依赖,可以是双向、一对一或一对多。聚合是关联的特殊形式,强调整体与部分的关系,允许部分独立存在。而组合关系比聚合更强,部分与整体生死与共,通常用于表示不可分割的组成部分。文章通过代码示例和类图清晰地展示了这三种关系的区别和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这篇文章是类间关系的下半篇,包含了 关联、聚合和组合 三种关系。建议先食用上篇文章。
上半篇博文戳这里


关联 (Association)

关联关系呢,可以看作是一种依赖的关系(上篇博文我们谈到过,依赖关系的范围实际上很广)。它强调的是,一个类知道另一个类的对象,而非仅仅是实现方法时用到。这个“知道”,往往指的就是在类中以另一个类对象作为成员(C++语言可以是对象本身,也可以是引用或是指针,而在java中就只有使用引用持有对象这一种形式)。而且,就像依赖关系可以是相互的,关联关系也可以是相互的,也可以是一对一或是一对多甚至多对多的。

在类图中,我们使用一条实线来连接彼此。我们在刚刚的类图中加入人类和武器类。为了简化,人类的其他关系以及武器的子类予以省略了。
看图:
在这里插入图片描述
在这里,人类将武器作为自己的成员变量,而武器类也将人类作为自己的成员变量。两个类互相“知道对方”。故是一种关联关系。
实现成代码:
java:

//人类
public class Human extends Animal{
   
    private Weapon weapon;

}
//武器
public class Weapon {
   
    private String name;
    private Animal belongTo;

}

C+:

//人类
#ifndef HUMAN_H
#define HUMAN_H
#include 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值