-
浅克隆是克隆一层,例如:克隆某个对象时,被克隆对象的基本数据类型的内容与克隆对象的基本数据类型的内容不同,而被克隆对象的引用数据类型与克隆对象的引用数据类型则属于共享一份【属于对象里面的其中一个属性也是一个对象】。
-
深克隆是在克隆一层的同时也把其属性在克隆一份,形成独立的内容。例如:克隆某个对象时,被克隆对象的基本数据类型的内容与克隆对象的基本数据类型的内容不同,被克隆对象的引用数据类型【如对象】也与克隆对象的引用数据类型【如对象】不同【属于对象里面的其中一个属性也是一个对象】。
-
浅克隆
-
class Teacher{ String name; int age; public Teacher(String name,int age){ this.name = name; this.age = age; } } class Student implements Cloneable{ String name; Teacher tea; public Student(String name,Teacher tea){ this.name = name; this.tea = tea; } @Override public Student clone() throws CloneNotSupportedException{ return (Student)(super.clone()); } }
-
深克隆
-
class Teacher extends Object implements Cloneable{ String name; int age; public Teacher(String name,int age){ this.name = name; this.age = age; } @Override public Teacher clone() throws CloneNotSupportedException{ return (Teacher)(super.clone()); } } class Student implements Cloneable{ String name; Teacher tea; public Student(String name,Teacher tea){ this.name = name; this.tea = tea; } @Override public Student clone() throws CloneNotSupportedException{ Student stu = (Student)(super.clone()); stu.tea = stu.tea.clone(); return stu; } }