(十三)对象克隆

Object类实现了clone()方法(protected)。用户自己编写的类若想调用该方法, 必须实现Cloneable接口,以此表明 Object.clone()是合法的。

如果对象中的域是引用数据类型,克隆的新对象的对应域和原来的域共同引用同一个对象。

注:Cloneable是一个标记接口,其没有可实现的方法。如果不实现该接口,调用super.clone()会报CloneNotSupportedException的异常。

浅拷贝

直接使用Object.clone()方法克隆一个对象,如果对象含有引用数据类型的域,则克隆的对象和原来的对象共享这部分数据。

class Emplyee implments Cloneable{
    public Employee clone() trows CloneNotSupportedException{
        Employee e = (Employee) super.clone();return e;  
    }       
}    

 

深拷贝

重新定义克隆方法

class Emplyee implments Cloneable{
    public Employee clone() trows CloneNotSupportedException{
        Employee e = (Employee) super.clone();//先直接克隆对象
        e.hireDay = (Date) hireDay.clone();   //将对象的引用数据类型的域进行一次克隆
        return e;  
    }       
}    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值