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

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

public class Test01 implements Cloneable{


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


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

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


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

引用
而深 克隆是把对象的属性一一重新生成为新的属性,不是原来的对象了,确是重新生成,被层层复制。

你可能感兴趣的:(java,Blog)