java中的对象克隆(深、浅) 和 类与类之间的关系

对象克隆:

        将一个对象进行复制(对象的内容相同),开辟新的内存地址。

浅克隆:

        关联对象只是进行地址引用,并没有创建新的对象,只将关联对象的地址指向原始引用对象。

深克隆:

        关联对象也进行复制,创建新的对象

实现深克隆:

方式1:类实现Cloneable接口,在每一层类中都重写clone方法,但是层级多了,比较麻烦。

方式2:序列化  对象的输入输出(流),类要实现Serializble接口

类与类之间的关系

1.依赖关系:

在一个类的方法中,使用到了另一个,具有临时性 use-a

2.关联关系:

Has-a

一个类是另一个类的属性

单向关联

双向关联

自关联

根据关联的强弱程度分为{   组合(强)、聚合(弱)   }
聚合关系

成员对象是整体对象的一部分,但是成员对象可以脱离整体对象而独立存在。

例如:学校与老师的关系,学校包含老师,但如果学校停办了,老师依然存在。

组合关系
整体对象可以控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在, 部分对象不能脱离整体对象而存在。例如,头和嘴的关系,没有了头,嘴也就不存在了。

3.继承关系

继承关系是对象之间耦合度最大的一种关系,表示一般与特殊的关系,是父类与子类之间的关系

Is-a

4.实现关系

接口与实现类之间的关系,接口与实现类之间的关系。
例如,汽车和 船实现了交通工具

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

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

相关文章

SQL的执行与优化

文章目录 MySQL查询原理与优化一、select语句的执行顺序二、join 的执行与优化1、驱动表 & 被驱动表2、Simple Nested Loop Join3、Index Nested Loop Join4、Block Nested Loop Join5、Hash Join6、join 优化小结 三、on 与 where 对比四、group by 的执行与优化1、group …

订阅OnlyFans攻略

在数字化的今天,社交媒体平台已经成为我们生活中的一部分。其中,OnlyFans以其独特的内容和用户群体,吸引了大量创作者的加入。而Wildcard,作为一种便捷的支付工具,与OnlyFans的结合更是为创作者和粉丝带来了前所未有的…

监视和内存观察

监视和内存观察 5.监视和内存观察5.1 监视5.2 内存 5.监视和内存观察 在调试的过程中我们,如果要观察代码执行过程中,上下文环境中的变量的值,有哪些方法呢? 这些观察的前提条件一定是开始调试后观察,比如&#xff1…

NVENC 视频编码器 API 编程指南 ( 中文转译 )

基于 NVIDIA Kepler™ 和更高版本 GPU 架构的 NVIDIA GPU 包含基于硬件的 H.264/HEVC/AV1 视频编码器(以下简称 NVENC)。NVENC 硬件采用 YUV/RGB 作为输入,并生成符合H.264/HEVC/AV1 标准的视频比特流。可以使用 NVIDIA 视频编解码器 SDK 中提…

【Qt问题】vs里直接打开qt项目的ui会崩溃

问题描述: 当我用VS2019开发Qt的时候,在VS编译器里要用到Qt的ui设计,但是双击打开发现直接就崩溃了。 解决办法: 崩溃的原因很简单,是因为VS默认用的qt designer打开,所以会崩溃,我们右键单击…

智慧城市与数字孪生:共创未来城市的智慧生活

目录 一、智慧城市与数字孪生的概念与特点 二、智慧城市与数字孪生共创智慧生活的路径 1、城市规划与建设的智能化 2、城市管理与服务的智慧化 3、城市安全与应急管理的智能化 三、智慧城市与数字孪生面临的挑战与对策 四、智慧城市与数字孪生的发展趋势与展望 1、技术…

macOS系统中通过brew安装MongoDB

Macos 修改目录权限: sudo chmod -R 777 你的文件夹 本文使用homebrew进行安装简单,因为从官网下载安装包并手动安装需要移动安装包到合适的目录下并配置环境变量等一大堆操作后才能使用数据库(若没有安装过brew请自行百度进行安装brew&am…

vscode jupyter 如何关闭声音

网上之前搜的zen模式失败 仅仅降低sound失败 #以下是成功方式: 首先确保user和remote的声音都是0: 然后把user和remote的以下设置都设置为off就行了! 具体操作参考 https://stackoverflow.com/questions/54173462/how-to-turn-off-or-on-so…

jvm 内存泄露、内存溢出、栈溢出区别

JVM(Java虚拟机)是负责执行Java程序的运行环境。以下是对内存泄露、内存溢出和栈溢出这几个概念的解释: 内存泄露(Memory Leak): 内存泄露指的是程序中分配的内存空间在不再被使用时没有被释放的情况。这可…

Visual Studio配置libtorch(cuda安装一步到位)

Visual Studio配置libtorch visual Studio安装cuDNN安装CUDAToolkit安装libtorch下载Visual Studio配置libtorch(cuda版本配置) visual Studio安装 visual Studio点击安装 具体的安装和配置过程这里就不进行细讲了,可以参考我这篇博客Visual Studio配置OpenCV(保姆…

很好的一本书,推荐给你们《Hello 算法》

算法犹如美妙的交响乐,每一行代码都像韵律般流淌。 愿这本书在你的脑海中轻轻响起,留下独特而深刻的旋律。 本项目旨在打造一本开源免费、新手友好的数据结构与算法入门教程。 全书采用动画图解,内容清晰易懂、学习曲线平滑,引导…

Echo框架:高性能的Golang Web框架

Echo框架:高性能的Golang Web框架 在Golang的Web开发领域,选择一个适合的框架是构建高性能和可扩展应用程序的关键。Echo是一个备受推崇的Golang Web框架,以其简洁高效和强大功能而广受欢迎。本文将介绍Echo框架的基本特点、使用方式及其优势…