码迷,mamicode.com
首页 > 编程语言 > 详细

[Java学习笔记]对象克隆

时间:2014-05-14 02:46:53      阅读:257      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   c   

对象克隆:

浅克隆:

被克隆的对象中的值类型数据被复制一份新值,但是引用的对象只被复制其引用传递给新克隆出来的对象

 

深克隆:

被克隆的对象中的值类型数据被复制一份新值,并且其中引用的对象会重新创建新的对象,把新对象的引用传递给新克隆出来的对象

 


 

 

Java中实现克隆:

Java中Object中定义了clone方法,默认为浅克隆操作,即你只是简单super.clone得到的结果是浅克隆的结果,如果需要深克隆,则需要实现Cloneable接口,并且重写clone方法

 

查看Java源代码发现Object中的克隆方法如下:

protected native Object clone() throws CloneNotSupportedException;

 

通过JNI调用,也就是Object的默认clone实现就是C++中的浅克隆操作.

 

C++中克隆(复制)一个对象的途径一般为两种:

一是实现类的【复制构造函数】

二是实现【=号运算符】的重载

对于C++而言,所谓的浅克隆和深克隆就只是一个概念了,需要浅克隆那么在上述两种操作中就传递指针,如果需要深克隆则new出新的对象即可

 

一个类不显示实现此两个方法,无法进行对象的克隆(复制),然而由于Java的Object是默认浅克隆,所以可推断Object中的native clone方法是一个浅复制

 

[Java学习笔记]对象克隆,布布扣,bubuko.com

[Java学习笔记]对象克隆

标签:style   blog   class   code   java   c   

原文地址:http://www.cnblogs.com/hellenism/p/3723889.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!