1、clone和new的区别?
clone是一个对象复制另一个对象的值,new是开辟一个新的对象空间,没有赋值。
2、clone的2种分类,分别是在什么情况下使用?
由于对象内可能包含另外一个对象的实例(或引用变量)。浅拷贝完成时,新产生的对象和旧对象可以同时访问包含内的同一对象。深拷贝就是为了防止2个对象同时可以操作这个同一引用。
3、对象实现clone的步骤示例
第一步、implements Cloneable
第二步、重写clone接口
浅拷贝操作:
public Object clone(){ Object obj = null; try{ obj = super.clone(); }catch(CloneNotSupportedException ex){ ex.printStackTrace(); } return obj; }
深拷贝操作:同时还拷贝了引用的变量(Date对象begin)。
public Object clone(){ DeepCopy obj = null; try{ obj = (DeepCopy)super.clone(); }catch(CloneNotSupportedException e){ e.printStackTrace(); } obj.setBegin((Date)this.getBegin().clone()); return obj; }
没有第一步,CloneNotSupportedException会报错。