복제 생성자(Copy Constructor)는 객체 지향 프로그래밍에서 사용되는 개념으로, 주어진 객체의 필드를 그대로 복사하여 새로운 객체를 생성하는 생성자입니다. 이를 통해 새로운 객체가 생성되면서 기존 객체와 동일한 값들을 가지지만, 서로 독립된 객체로 존재하게 됩니다.
복제 생성자의 역할:
- 깊은 복사(Deep Copy): 복제 생성자는 객체의 필드가 참조 타입(예: 객체, 배열 등)일 때, 그 필드를 깊은 복사하여 새로운 객체를 생성할 수 있습니다. 깊은 복사를 통해 원본 객체와 새 객체가 참조하는 필드가 서로 독립적으로 존재하게 됩니다.
- 얕은 복사(Shallow Copy): 반면, 단순한 얕은 복사는 객체의 필드가 참조하는 메모리 주소를 그대로 복사하여 원본 객체와 새 객체가 동일한 필드를 참조하게 할 수 있습니다.
복제 생성자의 예시 (Java):
public class Person {
private String name;
private int age;
// 기본 생성자
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// 복제 생성자
public Person(Person other) {
this.name = other.name;
this.age = other.age;
}
// Getters and Setters
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
public class Main {
public static void main(String[] args) {
Person person1 = new Person("John", 30); // 원본 객체
Person person2 = new Person(person1); // 복제 생성자를 사용하여 person1을 복사
System.out.println(person2.getName()); // "John"
System.out.println(person2.getAge()); // 30
}
}
주요 특징:
- 독립적인 객체 생성: 복제 생성자를 사용하여 생성된 객체는 원본 객체와 동일한 값을 가지지만, 서로 다른 메모리 위치에 존재하는 독립된 객체입니다.
- 사용 시기: 복제 생성자는 주로 기존 객체의 상태를 그대로 유지하면서 새로운 객체를 만들어야 하는 경우에 유용합니다.
복제 생성자는 기본 생성자나 다른 형태의 생성자와 함께 객체의 다양한 초기화 방법을 제공하여 객체 지향 프로그래밍에서 중요한 역할을 합니다.
'JAVA' 카테고리의 다른 글
클라이언트와 서버 (0) | 2024.08.26 |
---|---|
Jpa 동작 기본 정리하기 (0) | 2024.08.23 |
List (0) | 2024.08.14 |
제네릭(generic) (0) | 2024.08.13 |
상속(extends) (0) | 2024.08.08 |