DateTime source = new DateTime(...);
方法一
DateTime dest = source;
这种方法是完全不行的,这种形式只是重新创建了一个引用指向这个对象,不能实现复制操作。
方法二
DateTime dest = source.copy();
这种方法和方法1没有区别。
public DateTime copy(){
return this;
}
方法三
DateTime dest = source.copy();
浅拷贝复制:这种方法使得dest和source指向了不同的对象,完成了对象的复制,但复制不彻底,没有复制到子对象,这就导致更改原数据,新复制数据随之更改。
public DateTime copy(){
DateTime dt = new DateTime();
dt.date = this.date;
dt.time = this.time;
return dt;
}
方法四
DateTime dest = source.copy();
深拷贝:这种拷贝方式可以彻底分开原对象与现在拷贝之后对象的联系,修改新对象不会影响原对象。
public DateTime copy(){
DateTime dest = new DateTime();
dest.date = new Date(this.date);
dest.time = new Time(this.time);
return dest;
}
如上便是对日期时间这个类的深浅拷贝描述,那么我们通过上面的列子就可以举一反三的对其他类进行拷贝,明确复制的对象是否影响原对象。