Object类中的clone方法
此方法创建并返回当前对象的一个副本。Object中的此方法是protected
,故我们需要在子类中重写,将访问权限提升至public
。
所有想使用clone方法的类都需要实现标识接口java.lang.Cloneable
。
代码实现:
public class Person implements Cloneable{
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
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;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}
public class Demo1 {
public static void main(String[] args) throws CloneNotSupportedException {
Person person = new Person("陈冠希",18);
System.out.println(person);
Person person2 = (Person) person.clone();
System.out.println(person2);
System.out.println(person == person2);
//浅克隆
System.out.println(person.getName() == person2.getName());
}
}
运行结果:
面试题:
深克隆与浅克隆的区别: