`

java中 对象的克隆(clone)

阅读更多
java中 克隆一个对象需要三步:
1:克隆的对象实现 Cloneable 标识接口
2:覆盖 Object 的 clone() 方法,在 clone() 方法中调用super.clone(),并把 protected 改为 public。
3:调用 clone() 克隆对象 ,如:代码第7行


克隆代码示例:
public class Test {

	public static void main(String[] args) {
		Professor p=new Professor("lisi",66);
		Student s1=new Student("zhaoliu",22,p);
		
		Student s2=(Student)s1.clone();
//深复制  -- 把s1的引用拷贝一份  赋值给s2 ,所以 改变s2的值  s1不改变 ,即输出(name=lisi,age=66)
		//Student s2=(Student)s1;
//浅复制  --只把s1的引用 赋值给s2 , 所以 改变s2的值  s1也改变 ,即输出(name=wangwu,age=40)
		s2.getP().setName("wangwu");
		s2.getP().setAge(40);
		System.out.println("name="+s1.getP().getName()+","+"age="+s1.getP().getAge());
	}
}

class Professor implements Cloneable {
	private String name;
	private int age;

	Professor(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public Object clone() {
		Object o = null;
		try {
			o = super.clone();
		} catch (CloneNotSupportedException e) {
			System.out.println(e.toString());
		}
		return o;
	}

	public String getName() {
		return name;
	}

	public int getAge() {
		return age;
	}

	public void setName(String name) {
		this.name = name;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
}

class Student implements Cloneable {
	private String name;
	private int age;
	private Professor p;

	Student(String name, int age, Professor p) {
		this.name = name;
		this.age = age;
		this.p = p;
	}

	public Object clone() {
		// Object o=null;
		Student o = null;
		try {
			o = (Student) super.clone();
		} catch (CloneNotSupportedException e) {
			System.out.println(e.toString());
		}
		o.p = (Professor) p.clone();
		return o;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public Professor getP() {
		return p;
	}

	public void setP(Professor p) {
		this.p = p;
	}
	
}
分享到:
评论

相关推荐

    Java中的克隆(Clone)机制

    在Java编程语言中,克隆(Clone)机制是一种创建对象副本的方法,它允许开发者创建一个已有对象的新实例,这个新实例与原对象具有相同的属性值,但却是两个独立的对象,彼此的操作不会互相影响。克隆机制在某些情况...

    详解Java中的克隆技术

    在Java编程语言中,克隆技术是一个重要的概念,它允许我们创建一个对象的精确副本,即一个全新的对象,它具有与原对象相同的属性值。这个副本通常可以独立于原始对象存在和修改。克隆技术在处理那些需要复制对象但又...

    JAVA_对象克隆

    在Java中,对象克隆可以通过实现`Cloneable`接口并覆盖`Object`类中的`clone()`方法来完成。`Cloneable`接口本身不包含任何方法,只是一个标记接口,表明该类的对象可以被克隆。`Object`类的`clone()`方法会创建一个...

    Java对象的复制克隆

    Java中的对象复制与克隆是程序开发中常见的需求,主要用于创建一个对象的副本,而不会影响原始对象的状态。这里主要讨论两种类型的对象拷贝:浅拷贝和深拷贝。 浅拷贝,也称为表面拷贝,是创建一个新的对象,然后将...

    java中的指针,引用及对象的clone

    Java中的对象克隆可以通过实现`Cloneable`接口并覆盖`clone()`方法来完成。对象的克隆分为浅拷贝和深拷贝两种形式。 **1. 浅拷贝** 浅拷贝是指创建一个新的对象,然后将原对象的所有非引用类型的成员变量复制到新...

    java对象复制克隆

    标题中的“java对象复制克隆”主要涉及的是深拷贝,这是一种创建一个新对象的方式,新对象不仅复制了原对象的所有属性,还复制了嵌套的对象引用,使得修改复制后的对象不会影响到原始对象。 **浅拷贝**:在浅拷贝中...

    java 对象克隆

    在Java编程语言中,对象克隆是一种创建一个与原对象具有相同数据的新对象的过程。对象克隆主要用于复制或备份对象,以便在不干扰原始对象的情况下对其进行修改或操作。本篇文章将详细探讨Java中的对象克隆及其实现...

    java克隆对象(两种方法)

    java的两种深度克隆方法,1cloneTest是用Cloneable接口的clone方法实现(对象必须要实现cloneable接口).2cloneSerialize.java是用对象流写对象到byte数组中,然后从byte数组中取得对象.(对象必须要实现serializble接口)

    如何进行Java对象的克隆.pdf

    Java 对象克隆是 Java 编程中一个重要的概念。由于 Java 中的对象使用引用类型,所以没有直接的方法可以将对象的内容复制到一个新的对象。Java 提供了一个特殊的 clone() 方法,为所有的引用类型提供了一套标准的...

    java 深克隆浅克隆

    在Java编程语言中,克隆是一种创建对象副本的方法,它允许我们复制一个对象并拥有一个完全独立的新实例,而不是仅仅引用原始对象。克隆技术在处理复杂数据结构、避免对象共享以及实现对象复制等方面有着广泛的应用。...

    对象克隆(clone)详解.docx

    对象克隆是Java编程中的一个重要概念,它允许我们创建一个已有对象的副本,而不影响原始对象。在Java中,克隆主要涉及到`Object`类中的`clone()`方法,以及两种不同的克隆类型:浅克隆和深克隆。 一、克隆的原理与...

    java clone

    在Java编程语言中,`clone`是一个非常重要的概念,它涉及到对象复制和对象克隆。本文将深入探讨Java中的`clone`方法,包括其工作原理、使用场景、注意事项以及一些个人实践心得。 首先,让我们理解什么是`clone`。...

    clone()方法示例(对象克隆)_对象克隆_nervouse78_源码

    在Java编程语言中,`clone()`方法是一个非常重要的概念,特别是在处理对象复制和数据持久化时。本示例将深入探讨`clone()`方法的工作原理、使用场景以及如何在实际编程中应用。首先,我们来理解一下`clone()`方法的...

    clone 深度克隆对象

    "clone"方法就是用于复制对象的一种方式,尤其在Java等支持此功能的语言中。本文将深入探讨"深度克隆"这一概念,以及它与普通克隆的区别,并讨论其在实际应用中的优缺点。 深度克隆,也称为完全克隆,是一种创建新...

    java 深克隆 浅克隆

    在Java编程语言中,克隆是一种创建对象副本的方法,它允许我们复制一个对象并得到一个与原对象相同但独立的新对象。克隆分为两种主要类型:深克隆和浅克隆。理解这两种克隆的区别是Java面向对象编程中的重要概念。 ...

    java 深克隆与浅克隆

    Java 深克隆与浅克隆 Java 中的克隆机制可以让我们方便地制造出一个对象的...Java 中的克隆机制可以方便地制造出对象的副本,但是需要注意浅克隆和深克隆的区别,并且需要正确地使用 Clone 方法,以避免不利的结果。

    java的深度克隆的例子

    在Java编程语言中,"深度克隆"是一个重要的概念,主要涉及到对象复制。深度克隆,也称为完全克隆,是指创建一个与原对象相同的新对象,不仅复制原对象的所有属性,还复制了原对象中引用的对象。这通常用于创建一个...

    java Clone

    Java中的`clone`方法是Java语言提供的一种复制对象的方式,它允许创建一个对象的副本,这个副本与原对象具有相同的属性值,但它们是两个独立的对象,修改副本不会影响原对象。`clone`方法存在于Java的`java.lang....

    Java对象的深克隆与浅克隆详解.zip(wcb2003)

    总的来说,理解Java对象的深克隆和浅克隆是优化代码和解决特定问题的关键。根据具体需求选择合适的克隆方式,可以提高代码的可维护性和灵活性。在设计类和系统时,应考虑对象复制的需求,并决定是否实现`Cloneable`...

Global site tag (gtag.js) - Google Analytics