java还提供了一个protected修饰的clone()方法,该方法用于帮助其他对象来实现”自我克隆”,所谓”自我克隆”就是得到一个当前对象的副本,而且二者之间完全隔离.由于Object类提供的clone()方法使用了protected修饰,因此该方法只能被子类重写或调用.
** 自定义类实现"克隆"的步骤如下:**
1.自定义类实现Cloneable接口.这是一个标记性接口,实现该接口的对象可以实现”自我克隆”,接口里没有定义任何方法.
2.自定义类实现自己的clone()方法.
3.实现clone()方法时通过super.clone()调用Object实现的clone()方法来得到该对象的副本,并返回该副本
下面程序示范了如何实现"自我克隆(浅克隆)":
public class CloneTest {
/**
* @param args
* @throws CloneNotSupportedException
*/
public static void main(String[] args) throws CloneNotSupportedException {
// TODO Auto-generated method stub
User u1 = new User(28);
// clone得到u1对象的副本
User u2 = u1.clone();
// 判断u1,u2是否相同
System.out.println(u1 == u2);// ①
// 判断u1,u2的address是否相同
System.out.println(u1.address == u2.address);