clone带来的问题

浅拷贝带来的问题
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());  
	    }  

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值