clone 메소드


정리 해 봅시다 .😘

 

기능:

  • 오브젝트의 내부를 똑같이 복사할수 있습니다.
    • 대상이 new로 만들어 질때의 생성자나 초기값은 상관없이. 현제 상태의 값 만을 복사합니다.
    • 맴버변수와 내부의 값까지 똑같은 인스턴스를 new 없이 새롭게 만들수 있습니다.
    • 만들어질때 대상(인스턴스)의 타입(기반이 되는 클레스)는 복사 되지 않고 object타입으로 생성됩니다. ( 완벽하게 복사하거나 원본의 메소드를 사용하기 위해서는 형변환을 해줘야 합니다)
      • “복사하려는 대상의 타입”+”만들려는 참조변수명” = (복사하려는 대상의 타입)대상.clone();

위치:

lang 페키지의 Object

  • 모든 class는 object를 상속받기 때문에 별도의 임포트나 상속이 필요하지 않습니다.

사용하는 방법:

  • 복제하려는 대상 오브젝트(인스턴스)나 기반이 되는 클레스에서 cloneable 를 implement 해야합니다.
    • 오브젝트 내부의 정보를 전부 복사하기 때문에. 개인,기업 정보의 보안적인 관점에서 정보은닉과 캡슐화, 객체 지향의 계념과 배척적 입니다. 그렇기에 이같은 위험성을 인지하고 허가 한다는 의미에서 cloneable 이라는 인터페이스를 명시(implement)해 줘야 사용할수 있습니다.
  • 복제하려는 대상 오브젝트(인스턴스)나 기반이 되는 클레스에서 clone메소드를 재정의(overrriding)으로 입력합니다 .( 오버라이딩 하지 않으면 작동되지 않기 때문에 필수 조건 입니다.)

에제 상황

  • 변화 되는 오브젝트 중간 중간에서 현제 값을 저장하게 하여. 값이 변화하는 오브젝트의 상태를 시간순서에 의거하여 비교 하여 수치 변화를 조건식으로 사용하거나 관찰 할때도 사용할수 있습니다

간단한 사용법 예제

package Clone_A;
class Target implements Cloneable{
	int A = 10;
	void runTest() {
		System.out.println("check");
	}
	@Override
	protected Object clone() throws CloneNotSupportedException {
		// TODO Auto-generated method stub
		return super.clone();
	}
	
	
}
public class TEST {
	public static void main(String[] args) throws CloneNotSupportedException {
		Target T1 = new Target();
		Target T2 = (Target)T1.clone();
		System.out.println(T2.A);
		T1.A = 20;
		System.out.println("==T1값 변조==");
		System.out.println(T1.A);
		System.out.println(T2.A);
	}
}
  • 이 예제 에서는 예외처리(Exception)를 try catch 하지 않고 디커렙션으로 throws 해서 간단하게 출력해 봤습니다.

단어 수집


 

에러 메세지


공부 모임

1) 카카오톡 오픈 채팅방

  - 모르는것을 질문하거나

  - 이해가 가지 않는 부분을 다른 분들의 블로그에서 참고하기 용도

2) 구루미 온라인 독서실

  - 학습 시간도 관리 해주는 온라인 독서실 

 

온라인 강의 주소

https://bit.ly/37BpXiC

추천합니다 . 👍 (e)

 

패스트캠퍼스 [직장인 실무교육]

프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.

fastcampus.co.kr

 

+ Recent posts