Java中实现对象的Clone

Java中实现对象的Clone

1、 声明实现Cloneable接口,并重写clone方法,如果不重写该方法,则不能调用对象的clone方法。
2、 在重写的clone方法中,调用super.clone拿到一个对象,如果父类的clone实现没有问题的话,在该对象的内存存储中,所有父类定义的字段都已经clone好了,该类中的值类型字段和引用类型字段也克隆好了,只是现在的引用类型字段都是浅copy。
3、 把浅copy的引用指向原型对象新的克隆体。

 

public class Person implements Cloneable {
	private String name;
	private Integer age;
	
	
	public Person(String strName, Integer iAge){
		this.name = strName;
		this.age = iAge;
	}

	@Override
	protected Object clone() throws CloneNotSupportedException {
		// TODO Auto-generated method stub
		return super.clone();
	}
}


 

public class Account implements Cloneable {
	private Person person;
	private Integer balance;
	public Account(Person p, Integer i){
		this.person = p;
		this.balance = i;
	}
	@Override
	protected Object clone() throws CloneNotSupportedException {
		// TODO Auto-generated method stub
		Account account =(Account) super.clone();
		account.person = (Person)this.person.clone();
		return account;
	}
	
}


 

注意点:Object.clone方式是protected(受保护的),该方法只在其子类和包内中可见。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值