package cloneTest; import java.io.IOException; import java.util.Date; /* * clone()æ¹æ³å¿ é¡»å®ç°Clonableæ¥å£ï¼å¦åä¼åºç°CloneNotSupportedExceptionå¼å¸¸ * * */ public class CloneTest { public static void main(String[] args) { Wife wife=new Wife("å¼ ä¸",new Date()); Husband husband=new Husband(wife, 30); /*æµ å éï¼åªå éäºå¤å±å¯¹è±¡ï¼å¯¹è±¡ä¸ç对象并没æå é*/ Husband husband2=(Husband) husband.clone(); husband2.setAge(40); husband2.getWife().setName("æå"); System.out.println("husband1 age:"+husband.getAge()+" husband2 age:"+husband2.getAge()); System.out.println("husband1åhuaband2æ¯å¦æ¯åä¸å¯¹è±¡ï¼"+(husband==husband2)); System.out.println("wife name:"+husband.getWife().getName()+" wife2 name:"+husband2.getWife().getName()); System.out.println("wifeæ¯å¦æ¯åä¸ä¸ªå¯¹è±¡ï¼"+(husband.getWife()==husband2.getWife())); System.out.println(); try { /*æ·±å éï¼å®ç°åºå忥å£ï¼å°å¯¹è±¡åå ¥æµä¸ã * */ Husband husband3=(Husband) husband.deepClone(); husband3.setAge(50); husband3.getWife().setName("æå"); System.out.println("husband1 age:"+husband.getAge()+" husband3 age:"+husband3.getAge()); System.out.println("wife name:"+husband.getWife().getName()+" wife3 name:"+husband3.getWife().getName()); System.out.println("husband1åhuaband3æ¯å¦æ¯åä¸å¯¹è±¡ï¼"+(husband==husband3)); System.out.println("wifeæ¯å¦æ¯åä¸ä¸ªå¯¹è±¡ï¼"+(husband.getWife()==husband3.getWife())); } catch (ClassNotFoundException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }