java基础6--一张图说明-深克隆和浅克隆

##深克隆和浅克隆
这里写图片描述
上图中浅克隆的代码如下

package com.demo9aa.demo2;
public class People  {
	private Dog dog;
	private int age;
	public People(Dog dog) {
		// TODO Auto-generated constructor stub
		this.dog=dog;
	}
	public People() {
		// TODO Auto-generated constructor stub
	}
	public Dog getDog() {
		return dog;
	}
	//people的属性和方法如上代码
	public static void main(String[] args)  {
	   People p=new People(new Dog());
	   People pp=p;
	   System.out.println(pp.getDog());
	   System.out.println(p.getDog());
	   //两句输出语句输出的结果是一样的。(由于没重写Dog的toString方法,默认输出的是该对象的地址信息)
	}

}

上图中深克隆的代码如下

package com.demo9aa.demo2;

public class People  implements Cloneable {
//此处省略people类的部分属性和方法
	@Override
	public Object clone() throws CloneNotSupportedException {
		// 深克隆,实现Cloneable接口,重写clone方法,并且clone方法由protected扩展为public
		this.dog=new Dog();
		return super.clone();
	}
	
	
	public static void main(String[] args)  throws CloneNotSupportedException  {
	   People p=new People(new Dog());
	   System.out.println(p.getDog());
	   Object o=p.clone();
	   
	   if(o instanceof People){
		   System.
		   People pp=(People)o;
		   System.out.println(pp.getDog());
	   }
	}

}

###浅克隆
浅克隆解决基本数据类型问题。是ok的。
Object中的clone()方法
它提供了一个浅克隆的方法。
它是一个native方法。

深克隆

深克隆的方法是:

	 1. 实现Cloneable接口
	 	(cloneable是一个标记接口,仅仅表示类设计者要进行克隆处理,若一个对象需要克隆,未实现cloneable接口,会抛出 CloneNotSupportedException)	
	 3. 使用public访问修饰符重新定义clone方法。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值