Java

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

Smart Factory in 2020 2021. 9. 6. 13:23
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
반응형