1.Object类关于自定义实现“克隆”的步骤
- 自定义类实现Cloneable接口,实现该接口的对象可以实现“自我克隆”。
- 自定义类实现自己的clone()方法。
- 实现clone()方法时通过super.clone():调用Object实现的clone()方法来得到对象的副本,并返回该副本。
2.代码示例
class Address { String detail; public Address(String detail) { this.detail = detail; } } //实现Cloneable接口 class User implements Cloneable { int age; Address address; public User(int age) { this.age = age; address = new Address("西安"); } // 通过调用super.clone()来实现clone()方法 public User clone() throws CloneNotSupportedException { return (User)super.clone(); } } public class CloneTest { public static void main(String[] args) throws CloneNotSupportedException { User u1 = new User(29); // clone得到u1对象的副本。 User u2 = u1.clone(); // 判断u1、u2是否相同 System.out.println(u1 == u2); //① // 判断u1、u2的address是否相同 System.out.println(u1.address == u2.address); //② } }
3.运行结果
false
true
4.Object类提供的克隆机制图
Object类的clone()方法虽然简单易用,但它只是一种“浅克隆”,它只克隆该对象的所有成员变量值,不对引用类型的成员值所引用的对象进行克隆,该类提供的克隆机制如下图。
相关推荐
本资源是一个关于深度学习典型应用,特别是卷积神经网络(CNN)的论文集合,旨在帮助研究者和学习者深入理解CNN及其在Caffe框架下的应用。 1. **ICCV15_tutorial_training_rbg.pdf**:这可能是一份关于ICCV 2015年...
在本文中,我们将深入探讨XML在数据标记、处理、共享与分析中的典型应用,通过源代码实例来解析其核心概念和技术。 1. 数据标记: XML通过自定义的标签对数据进行结构化标记,使得数据含义明确,易于理解和处理。...
在这个“很典型的ajax应用”中,我们将深入探讨如何实现一个输入关键字动态显示列表的简单实例,以及如何将Ajax技术应用于Java后端。 首先,让我们从用户界面(UI)开始。在这个实例中,用户会有一个输入框用于输入...
这个"JavaScript典型应用例程(源程序)"的压缩包显然为初学者提供了一个深入理解JavaScript语言的实践平台。下面,我们将详细探讨其中可能包含的知识点。 首先,JavaScript的基础语法是学习的重点。这包括变量声明...
《Java典型应用彻查1000例第四卷:数据库应用基础》是一本全面解析Java在数据库应用领域的专著,其配套的压缩包资源包括源码、PPT讲解材料以及习题,旨在帮助读者深入理解和掌握Java与数据库的交互技术。下面我们将...
本文将基于"Visual C#.NET串口通信及测控应用典型实例"这一主题,深入探讨C#语言如何用于实现上位机串口通信,并与单片机进行数据交互。 首先,让我们理解什么是上位机和下位机。上位机通常指的是PC或其他具有较高...
本套源码集合是一系列基于纯JavaScript实现的典型应用技巧实例,旨在帮助开发者深入理解和掌握JavaScript的核心特性和实战技能。以下是这些源码所涵盖的一些关键知识点: 1. **基础语法**:JavaScript的基础包括...
**Ajax应用开发典型实例** Ajax(Asynchronous JavaScript and XML)技术是现代Web应用程序中的关键组成部分,它允许在不刷新整个页面的情况下与服务器进行异步数据交换。这种技术极大地提升了用户体验,因为它减少...
- **对象(Object)**:是类的一个实例,具有特定的状态和行为。 - **继承(Inheritance)**:允许一个类继承另一个类的特性,从而支持代码复用和模块化。 - **封装(Encapsulation)**:隐藏对象的内部状态和实现细节,仅...
通过实例的应用和问题解决,开发者可以掌握SQL在Delphi中应用的典型方法,提升开发数据库相关应用程序的能力,并解决实际开发中遇到的问题。同时,对数据库的整体设计、SQL语句的编写与执行以及应用程序的用户界面...
这些类提供了丰富的功能,可以帮助开发者快速构建应用程序。 ##### 2. #import、@interface等 - **#import**:相当于C#中的`using`关键字,用于导入其他文件或头文件。Objective-C中推荐使用`#import`而不是`#...
本主题深入探讨JavaScript的典型应用与最佳实践,旨在帮助开发者提升技能,优化代码,实现高效且健壮的Web解决方案。 一、变量与数据类型 在JavaScript中,变量的声明可以使用var、let或const关键字。var是函数作用...
根据提供的文件信息,该文档是一篇题为“A Survey of Deep Learning-based Object Detection”的综述文章,由Licheng Jiao、Fan Zhang、Fang Liu、Shuyuan Yang、Lingling Li、Zhixi Feng和Rong Qu共同撰写,内容...
模式是解决特定问题的具体策略,而框架则是一组协作的对象和类的集合,用于解决某一领域内的多个问题。理解和运用好模式有助于开发者更好地利用框架。 1. **模式与框架的区别**:模式侧重于解决具体问题,而框架则...
这个“三级无刷新级联实例”是Ajax在Web开发中的典型应用,它允许用户在选择某个选项时,不需刷新页面即可动态获取并展示下级选项,通常用于如地区选择、类别筛选等场景。 在这个实例中,我们看到使用了名为`...
《Visual C++编程技巧典型案例解析——基础与应用篇(下)》是一本深入探讨Visual C++编程技术的专著,其主要目标是帮助开发者提升在实际项目中的编程技能和问题解决能力。书中涵盖了大量的实例源代码,使得学习者...
### 控件工具箱典型应用三例 #### 一、引言 随着信息技术的发展与教育现代化的需求日益增强,多媒体教学已成为现代课堂教学的重要组成部分。PowerPoint作为一款广泛应用的教学辅助工具,不仅因其简洁的操作界面受...
那么vue中双向数据绑定就是一个典型的应用。 Vue2.x 是使用 Object.defindProperty(),来进行对对象的监听的。 Vue3.x 版本之后就改用Proxy进行实现的。 下面我们先来理解下Object.defineProperty作用。 一: 理解...