`
teacher1998
  • 浏览: 3911 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

第六章 clone

 
阅读更多
使用场景:复制当前类,但新类状态的改变不影响原类时
protected Object clone()[java.lang.Object]
clone在进行时只能是一个字段一个字段的复制
对于只包含不可变字段(String,primitive类型)的类, shallow clone[浅拷贝]是可行的,
但是当当前类包含指向其他类的引用时(eg. Date类型),须进行deep clone[深拷贝],因为此时,当前类和克隆的新类都包含指向同一类内存的引用类型,对当前类或克隆类的改变都会影响彼此。

在进行克隆时要考虑:
当前类是否只包含不可变的字段,是则只需重写默认的clone方法[拓展protected 为public],否则要对引用字段进行克隆
1.implements Cloneable接口
2.重写默认的clone方法【拓展protected 为public(不知作者为什么在这里特别指出非得将protected拓展为public,感觉均可)】

public class Employee implements Cloneable{
  private String name;
  private double salary;
  private Date hireDay;

public Employee clone() throws CloneNotSupportedException {
  //call Object.clone()
  Employee cloned = (Employee)super.clone();
  //cloned.hireDay = (Date) hireDay.clone();
  return cloned;
}
...
...
}
分享到:
评论

相关推荐

    Java语言程序设计基础课后复习题答案第十三章

    Java 语言程序设计基础课后复习题答案第十三章 ...Java 语言程序设计基础课后复习题答案第十三章涵盖了 Java 语言的基础知识、对象和类、多态、接口、异常处理、日期和时间、compareTo 方法和 clone 方法等重要知识点。

    jQuery第三章代码

    **jQuery第三章代码详解** jQuery,作为一款广泛使用的JavaScript库,极大地简化了DOM操作、事件处理、动画制作以及Ajax交互。本章我们将深入探讨jQuery的核心概念、语法特性以及实际应用,帮助你更好地理解和掌握...

    《锋利的JQUERY》实例下载 第八章

    《锋利的JQUERY》是一本深入探讨jQuery技术的书籍,其第八章的实例下载提供了丰富的实践案例,帮助读者巩固和提升在jQuery方面的技能。jQuery是JavaScript的一个库,以其简洁的API和强大的功能深受Web开发者喜爱,...

    jquery基础教程第8章下

    **jQuery基础教程第8章下** 在本章节中,我们将深入学习jQuery库的高级特性,这个流行的JavaScript库极大地简化了DOM操作、事件处理、动画效果和Ajax交互。jQuery以其简洁的API和广泛的社区支持,成为了Web开发者的...

    Object-Oriented Analysis and Design 第六章

    Instead of creating a new character from scratch every time, you could clone an existing character as a prototype, then modify the cloned character with different attributes like strength, speed, or ...

    Java第6章 字符串 含源代码

    `compareTo()`方法按照字典顺序比较字符串,`clone()`创建字符串的副本。 9. **国际化** `java.text`包提供了`Format`类族,支持日期、数字、货币等的本地化格式化。 10. **性能优化** 在大量字符串操作时,使用...

    第4章 前端面试技能拼图2 :前端基础知识 , 必知必会

    本章“第4章 前端面试技能拼图2:前端基础知识,必知必会”将深入探讨那些面试官常问且开发者必须掌握的核心概念。 1. HTML(超文本标记语言): HTML是网页内容的结构标准,是前端开发的基石。理解不同标签的作用...

    第3章 前端面试技能拼第3章 前端面试技能拼

    以下是对“第3章 前端面试技能拼”所涵盖知识点的详细解析: 1. **数据结构与算法**: - **数组**:理解数组的基本操作,如遍历、查找、插入和删除,以及它们的时间复杂度。 - **链表**:掌握链表的结构和操作,...

    machineLearningDeepLearning:李宏毅2021机器学习深度学习笔记PPT作业

    李宏毅老师2021年Spring机器学习深度学习上线新课程,持续更新中 PPT,作业代码,学习笔记,...第六章 中文 第七章 中文 第八章 中文 第九章 官网暂未更新 HomeWork部分 路径:machineLearningDeepLearning/homework

    Effective Java第三版1

    ### 第六章 实例域 讨论实例域的初始化、可见性、并发访问等,以及如何设计线程安全的类。 ### 第七章 类的复用 涵盖类和接口的复用策略,如组合优于继承、接口优于抽象类等。 ### 第八章 并发 讨论Java并发工具和...

    第2.6章 讨论1

    本章主要讨论了创建型设计模式之间的关系,特别是抽象工厂(Abstract Factory)、原型模式(Prototype)和工厂方法模式(Factory Method)之间的相互作用和应用场景。 首先,抽象工厂模式是一种提供创建一系列相关...

    python入门到高级全栈工程师培训 第3期 附课件代码

    第6章 01 上节课复习 02 磁盘分区 03 文件系统与挂载 04 挂载信息讲解 05 磁盘用满的两种情况 06 软连接和硬链接 07 软连接和硬链接补充 第7章 01 ip地址与子网划分 02 ip地址配置 03 虚拟机网络模式 04 三层隔离...

    [ASP.NET.AJAX编程参考手册(涵盖ASP.NET.3.5及2.0)].(美)霍斯拉维.扫描版.pdf

    第6章 DOM扩展 6.1 DomElement 6.1.1 getElementById 6.1.2 addCssClass 6.1.3 containsCssClass 6.1.4 removeCssClass 6.1.5 toggleCssClass 6.1.6 getLocation 6.1.7 setLocation 6.1.8 getBounds 6.2 MouseButton...

    网页编程语言学习第10章.ppt共25页.pdf.zip

    【网页编程语言学习第10章】的课程涵盖了网页开发中的关键知识点,主要针对初学者和进阶者,旨在深入理解网页编程的核心概念和技术。在这个章节中,我们将会探讨以下几个重要方面: 1. HTML(超文本标记语言):...

    第5章 内核线程1

    在实际操作中,内核线程的创建和调度通常通过系统调用来实现,如Linux中的`clone`、`pthread_create`(在用户空间通过系统调用进入内核)、`schedule`等。调度算法包括轮转调度、优先级调度等,不同的调度策略会影响...

    Linux内核源代码情景分析 (上下册 高清非扫描 )

    第6章 传统的Unix进程间通信 6.1 概述 6.2 管道和系统调用pipe() 6.3 命名管道 6.4 信号 6.5 系统调用ptrace()和进程跟踪 6.6 报文传递 6.7 共享内存 6.8 信号量 第7章基于socket的进程间通信 7.1系统调用...

    Thinking in Java 中文第四版+习题答案

    第6章 类再生 6.1 合成的语法 6.2 继承的语法 6.2.1 初始化基础类 6.3 合成与继承的结合 6.3.1 确保正确的清除 6.3.2 名字的隐藏 6.4 到底选择合成还是继承 6.6 递增开发 6.7 上溯造型 6.7.1 何谓“上溯造型”? 6.8...

    【Git权威指南】基础教程-第一章【视频】

    本教程“【Git权威指南】基础教程-第一章”是为初学者精心设计的入门课程,旨在帮助学习者快速掌握Git的基本概念和操作。在这个章节中,我们将深入探讨以下几个核心知识点: 1. Git简介:Git是由Linux之父Linus ...

    嵌入式Linux应用程序开发详解_linux_

    6. **第六章 文件I/O编程**:文件操作是任何应用程序的核心部分,本章会讲解打开、关闭、读写文件的函数,以及错误处理和文件权限等。 7. **第七章 进程控制开发**:进程是Linux中的基本执行单元,本章会涉及进程...

Global site tag (gtag.js) - Google Analytics