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
반응형
'Java' 카테고리의 다른 글
자바 중급 022. 인스턴스 초기화 블럭, 정적 초기화 블럭,초기화 순서(2) (0) | 2021.09.09 |
---|---|
자바 중급 021. 인스턴스 초기화 블럭, 정적 초기화 블럭,초기화 순서(1) (0) | 2021.09.08 |
자바 중급 019. this()- 생성자 , this-참조변수 (0) | 2021.09.06 |
자바 중급 018. this() 생성자에서 다른 생성자 호출 (0) | 2021.09.05 |
자바 중급 017. 기본 생성자와 매개 변수가 있는 생성자 호출 (0) | 2021.09.04 |
댓글