在Java中,对象的克隆(Cloning)是指创建一个对象的副本。Java提供了两种克隆对象的方式:浅克隆(Shallow Clone)和深克隆(Deep Clone)。浅克隆创建的对象副本与原对象共享引用类型的成员变量,而深克隆则创建一个完全独立的对象副本,包括所有成员变量的副本。
浅克隆
浅克隆通过实现Cloneable
接口和重写clone
方法来实现。Cloneable
接口是一个标记接口,没有任何方法,用于指示该类的对象可以被克隆。
实现步骤:
- 实现
Cloneable
接口。 - 重写
clone
方法,调用super.clone()
方法。
编程示例:
class Person implements Cloneable {
String name;
int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + "}";
}
}
public class ShallowCloneExample {
public static void main(String[] args) {
try {
Person original = new Person("Alice", 30);
Person cloned = (Person) original.clone();
System.out.println("Original: " + original);
System.out.println("Cloned: " + cloned);
// 修改克隆对象的属性
cloned.name = "Bob";
cloned.age = 25;
System.out.println("After modification:");
System