> Java > java지도 시간 > JAVA의 얕은 복사와 깊은 복사

JAVA의 얕은 복사와 깊은 복사

黄舟
풀어 주다: 2016-12-20 13:31:43
원래의
1412명이 탐색했습니다.

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)에 더 많은 관련 내용이 있으니 참고해주세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿