Java面试八股之组合、聚合和关联三者的区别是什么

  1. 组合、聚合和关联三者的区别是什么

关联(Association):

最基本的一种关系,表示一个类知道另一个类的存在,或者说是类之间的某种联系。

关联可以是双向的也可以是单向的,且不规定参与关联的对象的生存周期。

实例:老师与学生之间的关系,学生可以有多个老师,老师也可以教授多个学生,但删除一个老师或学生不会直接影响到对方的存在。

聚合(Aggregation):

一种特殊的关联,表示整体与部分的关系,但这种关系比较松散。

部分对象可以在不同的整体对象间共享,且部分的生命周期不完全依赖于整体。即使整体被销毁,部分对象仍然可以独立存在。

在UML中,聚合通常用空心菱形表示。

实例:汽车(整体)和轮胎(部分)的关系,轮胎可以被安装在不同的汽车上,即使汽车报废,轮胎依然可以被重新利用。

组合(Composition):

也是整体与部分的关系,但比聚合更强烈,是一种“强拥有”的关系。

部分对象的生命周期严格依赖于整体对象,一旦整体对象被销毁,部分对象也随之消失,不能独立存在。

在UML中,组合通常用实心菱形表示。

实例:人体(整体)和心脏(部分)的关系,心脏不能脱离人体单独存在,如果人体不存在,心脏也就没有存在的意义。

 如果大家需要视频版本的讲解,欢迎关注我的B站:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/25035.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python基础教程(八):迭代器与生成器编程

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 💝&#x1f49…

使用命令给电脑添加虚拟网卡和IP

目录 1、添加网卡 1-1、windows系统添加网卡 1-2、Linux系统中添加网卡 2、添加IP和DNS 2-1、添加IP 2-2、 设置DNS 3、删除网卡 3-1、Windows: 3-2、Linux 3-3、macOS 4、示例: 首先以管理员方式进入CMD命令行; 点击“开始”->“管理员…

栈和队列的转换

目录 一、栈转队列 1、定义队列 2、放入元素 3、判断队列是否为空 4、队列的第一个元素 5、队列第一个元素的值 6、方法使用 二、队列转栈 1、定义栈 2、判断栈是否为空 3、放入元素 4、栈顶元素 5、栈顶元素的值 6、方法使用 一、栈转队列 定义两个栈&#xff0c…

2024.6.8

2024.6.8 **每日一题** 3040.相同分数的最大操作数目 Ⅱ,通多题意可知,该题最多有三种操作分数,分别是前两个,最后两个,以及第一个和最后一个的和。从这里也可以看出一共有三种状态转移方式,所以我们可以利…

【数据分享】《中国文化文物与旅游统计年鉴》2022

最近老有同学过来询问《中国旅游年鉴》、《中国文化文物统计年鉴》、《中国文化和旅游统计年鉴》、《中国文化文物与旅游统计年鉴》,这四本年年鉴的关系以及怎么获取这四本年鉴。今天就在这里给大家分享一下这四本年鉴的具体情况。 实际上2018年,为适应…

java之面向对象

1 面向对象介绍 <span style"background-color:#f8f8f8"><span style"color:#333333">1.面向过程:自己的事情自己干,代表语言C语言洗衣服:每一步自己要亲力亲为 -> 找个盆,放点水,找个搓衣板,搓搓搓 2.面向对象:自己的事情别人帮忙去干,代…

什么是突发性耳聋?

72小时内突然发生、原因不明的感音神经性听力损失&#xff0c;至少在相邻的两个频率听力下降≥20dBHL。 特点&#xff1a; 1发生在数分钟、数小时或3天以内的听力下降&#xff1b; 2原因不明&#xff1b; 3多发生于单侧&#xff0c;可伴有耳鸣、耳堵塞感及耳周麻木感&#…

【ARM Cache 及 MMU 系列文章 6.1 -- Cache maintenance 相关寄存器及指令详细介绍】

请阅读【ARM Cache 及 MMU/MPU 系列文章专栏导读】 及【嵌入式开发学习必备专栏】 文章目录 Cache Maintenance registers and instructionsDCZID_EL0DCZID_EL0寄存器字段解释 DCZ 使用场景Cache maintenance 范围选择 Cache maintenance 指令集 Cache Maintenance registers a…

C# E2Pose人体关键点检测(OpenVINO推理)

C# E2Pose人体关键点检测(OpenVINO推理) 目录 效果 模型信息 项目 代码 下载 效果 模型信息 Inputs ------------------------- name&#xff1a;inputimg tensor&#xff1a;Float[1, 3, 512, 512] --------------------------------------------------------------- Ou…

宝塔 php7.4 安装SQLserver扩展

一、加入微软源 curl https://packages.microsoft.com/config/rhel/7/prod.repo > /etc/yum.repos.d/mssqlrelease.repo二、安装odbc驱动程序 yum install msodbcsql mssql-tools unixODBC-devel 三、安装php7.4对应的pdo_sqlsrv扩展包 # 下载 wget http://pecl.php.net/…

C++数组

将数组作为引用传递给函数 函数参数不能是数组&#xff08;否则退化为指针&#xff09;&#xff0c;但可以是到数组的引用类型或指向其的指针类型&#xff0c;此时不会退化。 #include <iostream>void printArray(int (&arr)[5]) {for (int i 0; i < 5; i) {st…

Python代码大使用Paramiko轻松判断文件类型,提取上级目录

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、Paramiko简介 Paramiko是一个用于SSHv2协议的Python实现&#xff0c;提供了客户端和服务器功能。它可以用于远程连接和管理服务器&#xff0c;执行命令、上传下载文件等。本文将介绍如何使用Paramiko判断文件类…

数据挖掘分析的一点进步分享

import pandas as pd import matplotlib.pyplot as plt import numpy as npdata pd.read_csv(heros.csv,encoding"gbk") data.head() 导入数据集 进行分析 df_datadata.copy() df_data.describe()df_data.info() df_data.drop(英雄,axis1,inplaceTrue) df_data[最…

排查服务器cpu运行过高

ps -ef|grep java 查看所有运行的jar包 kill -9 进程号 杀死进程 nohup java -jar systemManagement-1.0-SNAPSHOT.jar > systemManagement.log 2>&1 & 运行jar包并把它挂在后台&#xff0c;而且生成log文件 排查服务器cpu运行过高 jps -lm 查看jar包是否真的…

饥荒云服务器卡顿情况如何解决

随着网络游戏的普及&#xff0c;云服务器逐渐成为游戏开发者和玩家们的首选。然而&#xff0c;在使用饥荒云服务器时&#xff0c;有时会遇到卡顿的问题&#xff0c;这给玩家带来了困扰。本文将探讨饥荒云服务器卡顿的原因&#xff0c;并提供一些可能的解决方法。 卡顿产生的原因…

实践分享:如何用小程序里的小组件做应用开发?

随着移动互联网的快速发展&#xff0c;小程序等轻量级应用平台日益成为用户获取信息和服务的重要渠道。而小组件也在其中扮演了至关重要的角色&#xff0c;不仅能够提升用户的交互体验&#xff0c;还能帮助开发者高效地构建功能丰富、界面美观的小程序。 本文中&#xff0c;我们…

构建第一个ArkTS应用之@卡片使用动效能力

ArkTS卡片开放了使用动画效果的能力&#xff0c;支持显式动画、属性动画、组件内转场能力。需要注意的是&#xff0c;ArkTS卡片使用动画效果时具有以下限制&#xff1a; 表1 动效参数限制 名称 参数说明 限制描述 duration 动画播放时长 限制最长的动效播放时长为1秒&…

使用 Java 操作 Redis 数据类型的详解指南

使用 Java 操作 Redis 数据类型的详解指南 在这篇指南中&#xff0c;我们将详细介绍如何使用 Java 通过 Jedis 客户端操作 Redis 的各种数据类型。每个示例都展示了如何连接到 Redis 并使用 Jedis 客户端执行各种操作&#xff0c;涵盖了字符串、列表、集合、哈希、有序集合、位…

深入理解交叉熵损失 CrossEntropyLoss - 最大似然估计

深入理解交叉熵损失 CrossEntropyLoss - 最大似然估计 flyfish 下面有详细的例子和公式的说明。 最大似然估计的概念 最大似然估计是一种统计方法&#xff0c;用来估计模型参数&#xff0c;使得在这些参数下观测到的数据出现的概率&#xff08;即似然&#xff09;最大。 具…

MySQL-7、连接的原理

前言 前面介绍了MySQL执行查询语句其中访问方法&#xff0c;包括const、ref、ref_or_null、range、index、all、index_merge&#xff08;索引合并&#xff09;。索引合并又分三种情况&#xff0c;Intersection(交集)索引合并、Union(并集)索引合并、Sort-Union索引合并。 &…