Backend/java

Clone()

IT grow. 2018. 8. 14. 19:16
반응형

Clone()


1.     객체 자신을 복제(clone)해서 새로운 객체를 생성하는 메서드

2.     Cloneable인터페이스를 구현한 클래스의 인스턴스만 복제할 수 있다.

3.     Object클래스에 정의된 clone()은 인스턴스변수의 값만을 복제한다.

4.     인스턴스변수가 참조형일 때 , 참조하는 객체도 복제되게 오버라이딩해야한다.



package Practice;
public class Examclone implements Cloneable
// Cloneable 인터페이스를 구현한 클래스에서만 clone을 호출할 수 있다.
// 만약 이 인터페이스를 구현해 놓지 않고 Clone을 호출하면 예외처리가 발생한다.
{
int x;
int y;
Examclone(int x, int y) {
this.x = x;
this.y = y;
}
@Override
public String toString() {
return "Examclone [x=" + x + ", y=" + y + "]";
}
public Object clone() {
Object obj = null;
try {
obj = super.clone();
} catch (CloneNotSupportedException e) {}

// Clone() 메서드에는 CloneNotSupportedException이 선언되어 있으므로 Clone메서드 사용시

// try-catch문을 사용해야 한다.
return obj;
}
}


클래스 하나를 더 만들어서 확인을 해보자.

package Practice;
public class CloneEx1 {
public static void main(String [] args) {
Examclone original = new Examclone(3,5); // 클래스의 인스턴스를 하나 생성한다.
Examclone copy = (Examclone)original.clone();
System.out.println(original);
System.out.println(copy); // 결과의 값이 original과 같은 것을 확인할 수 있다.
}
}

결과값 

Examclone [x=3, y=5]

Examclone [x=3, y=5]


반응형