본문 바로가기
Java

자바 중급 020. 인스턴스 복사 생성자, 인스턴스 복제

by Smart Factory in 2020 2021. 9. 6.
728x90
반응형

안녕하세요. 스마트팩토리입니다. 
자바 중급 020. 인스턴스 복사 생성자, 인스턴스 복제에 대해 알아보겠습니다. 

1. 인스턴스 복제

가. 인스턴스 복제

인스턴스 복제
-인스턴스 복제 생성자 작성
- 인스턴스 변수 값 모두 동일하면 독립적임.
-생성자에서 참조변수를 매개변수로 받아서 인스턴스 변수를 복제
-같은 인스턴스 값(변수)을 갖는 독립적인 인스턴스가 생성

<<Relate.java 클래스 >>

인스턴스 복제를 하기 위해서는 인스턴스 복제 생성자가 있어야 합니다. 

public Relate(Relate s) {
 this.name=s.name;
 this.age=s.age;
  }

이 처럼 생성자에서 매개변수가 클래스의 매개변로 참조 변수가 됩니다. 

 초기화 값은 this.name=s.name 처럼 작성되어 결과적으로 동일한 인스턴스를 하나다 만들어 주게 됩니다. 

c3, c4는 동일한 값을 가지는 독립적인 객체가 됩니다. 

package ex01;
public class Relate {
private String name;
private int age;
 
//public Relate() {}; 
public Relate(String name, int age) {
   this.name=name;
   this.age=age;
    }
 public Relate(String nm) {
  name=nm;
  age=45;
 }
 public Relate() {
   this("Hong",45);
    }
 public Relate(Relate s) {
 this.name=s.name;
 this.age=s.age;
  }
 
 public void show() {
 System.out.println(" 성명: "+this.name+" 나이: " +this.age);
 }
}

 

<<RelateEx.java 실행 클래스>>

객체 c4는 객체 c3를 복제 생성자를 통해서 복제한 객체입니다. 

Relate c4=new Relate(c3);

객체 복사를 했습니다 ..

 c3.show();
 c4.show();

출력을 해 보면 동일한 값이 나오는 것을 알 수 있습니다. 

package ex01;
public class RelateEx {
public static void main(String[] args) {
 Relate c1=new Relate();
 Relate c2=new Relate("kim", 45);
 Relate c3=new Relate("Lee");
 Relate c4=new Relate(c3);
     c1.show();
     c2.show();
     c3.show();
     c4.show();
}
}

 

728x90
반응형

댓글