浅克隆和深克隆的理解和区别

[quote] 今天,和同学讨论了下java的clone()方法;让我更加深刻的理解他们之间的关系;
首先,要实现克隆,先要实现Cloneable接口,重写clone()方法;[/quote]
public class Test01 implements Cloneable{


[quote]在具体实现的时候,浅克隆和深克隆是有区别的,虽然不容易理解,不过没关系,
下面会解释清楚的;
[/quote]

@Override//重写借口里面的方法;(浅克隆)
protected Test01 clone() throws CloneNotSupportedException {
Test01 t = new Test01();
t.id = this.id;
t.name = this.name;
return t;
}

[quote]浅克隆只是新实例,而实例的元素的内部属性的对象引用指向被克隆的属性元素对象,
内存中是一个新的Test01()对象,两个引用而已
[/quote]

@Override//深克隆
protected Test01 clone() throws CloneNotSupportedException {
Test01 t = new Test01();
t.id = this.id;
t.name = new String(this.name);
return t;
}

[quote]而深[url=http://anzhoujava.iteye.com/blog/698852]克隆[/url]是把对象的属性一一重新生成为新的属性,不是原来的对象了,确是重新生成,被层层复制。
[/quote]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值