public class Father implements Cloneable{
private String name ;
private Son son ;
public Father(String name,Son son){
this.name = name ;
this.son = son ;
}
public Son getSon(){
return this.son ;
}
public String getName(){
return this.name;
}
@Override
protected Object clone()throws CloneNotSupportedException{
return super.clone() ;
}
}
public class Son {
private String name ;
public Son(String name){
this.name = name ;
}
public void setName(String name){
this.name = name ;
}
public String getName(){
return this.name ;
}
}
public class Test {
public static void main(String args[]) throws CloneNotSupportedException{
Son s = new Son("111") ;
Father fa = new Father("Tom",s) ;
Father clonedFa = (Father) fa.clone() ;
System.out.println(fa!=clonedFa); //true
System.out.println(clonedFa.getClass()==fa.getClass()); //true
System.out.println(clonedFa.equals(fa)); //false
System.out.println(fa.getSon()==clonedFa.getSon()); //true
System.out.println(fa.getName()==clonedFa.getName());//true
//now we change the fa's son name by the clonedFa's son name
clonedFa.getSon().setName("222");
System.out.println(fa.getSon().getName());
}
}