1. 얕은 복사와 깊은 복사의 개념
⑴Shallow copy(shallow clone)
복사된 개체의 모든 변수는 원본 개체와 동일한 값을 포함하며, 다른 개체에 대한 모든 참조는 Point로 유지됩니다. 원래 개체에. 즉, 얕은 복사본은 참조하는 개체가 아닌 문제의 개체만 복사합니다.
⑵ 딥 카피(deep clone)
복사된 객체의 모든 변수는 원본 객체와 동일한 값을 가지지만, 이는 다른 객체의 변수를 참조합니다. 다른 개체를 참조하는 변수는 원래 참조된 개체가 아닌 복사된 새 개체를 가리킵니다. 즉, Deep Copy는 복사 대상 객체가 참조하는 모든 객체를 복사하는 것입니다.
2. Java의 clone() 메소드
⑴ clone 메소드는 객체를 복사하여 호출자에게 반환합니다. 일반적으로 clone() 메서드는 다음을 충족합니다.
① 모든 객체 x에 대해 x.clone() !=x//복제된 객체는 원본 객체와 동일한 객체가 아닙니다
② 모든 객체에 대해 정의가 적절하다면 x.clone().equals(x)가 유지되어야 합니다.
⑵Java의 객체 복제
①객체의 복사본을 얻으려면 Object 클래스의 clone() 메서드를 사용할 수 있습니다.
② 파생 클래스에서 기본 클래스의 clone() 메서드를 재정의하고 public으로 선언합니다.
③파생 클래스의 clone() 메소드에서 super.clone()을 호출합니다.
④파생 클래스에 Cloneable 인터페이스를 구현합니다.
다음 코드를 참조하세요.
class Student Implements Cloneable
{
문자열 이름;
int age;
Student(문자열 이름,int age)
{
this.name=name;
this. age =age;
}
public Object clone()
{
Object o=null;
try
{
o=(Student)super.clone();//Object의 clone()은 복사하려는
// 개체를 식별합니다.
}
catch(CloneNotSupportedException e)
{
System.out.PRintln(e.toString());
}
return o;
}
}
public static void main(String[] args)
{
Student s1=new Student("zhangsan",18);
Student s2=(Student)s1.clone();
위 내용은 JAVA 얕은 복사와 깊은 복사의 내용은 PHP 중국어 홈페이지(www.php.cn)에 더 많은 관련 내용이 있으니 참고해주세요!