package new20140519;
/**
* 自定义实现clone() 方法
* 1.自定义类实现Cloneable接口。这是一个标记性的接口,实现该接口的对象里可以实现“自我克隆”,
* 接口里没有任何方法。
* 2.自定义类实现自己的clone()方法
* 3.实现clone()方法时通过super.clone():调用Object实现的clone()方法来得到该对象的副本
* 并返回该副本
* @author wjl
*
*/
class Address
{
String detail;
public Address(String deatil)
{
this.detail=deatil;
}
}
//实现 Cloneable接口
class User implements Cloneable
{
int age;
Address address;
public User(int age)
{
this.age=age;
address=new Address("深圳");
}
public User clone() throws CloneNotSupportedException
{
return (User)super.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(25);
//clone 得到u1的副本
User u2=u1.clone();
System.out.println(u1==u2);//false
//判断u1、u2的地址是否相同
System.out.println(u1.address==u2.address);//true
}
}