在 Java 中支持对象的克隆操作,直接使用 Object 类中的 clone() 方法即可,方法定义如下:
protected Object clone() throws CloneNotSupportedException
以上方法是受保护的类型,所以在子类中必须覆写此方法,而且覆写之后应该扩大访问权限,这样才能被外部调用,但是具体的克隆方法的实现还是在 Object 中,所以在覆写的方法中只需要调用 Object 类中的 clone() 方法即可完成操作,而且在对象所在的类中必须实现Cloneable 接口才可以完成对象的克隆操作。
Cloneable 接口实际上是一种标识接口,表示对象可以被克隆
class Person implements Cloneable{
//必须实现 Cloneable 接口
private String name = null;
public Person(String name){
this.name = name;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
//需要子类覆写 clone() 方法
public Object clone() throws CloneNotSupportedException{
return super.clone();//具体的克隆操作由父类完成
}
public String toString(){
return "姓名:" + this.getName();
}
}
public class Test{
public static void main(String[] args) {
Person p1 = new Person("Java");
try {
Person p2 = (Person) p1.clone();
p2.setName("Python");
System.out.println("原始对象:" + p1);
System.out.println("克隆之后的对象:" + p2);
}catch (CloneNotSupportedException e){
e.printStackTrace();
}
}
}
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36