이 글에서는 Java에서 하나의 생성자 안에서 다른 생성자를 호출하는 방법을 알아봅니다. 이때 사용되는 핵심 키워드는 바로 this()입니다.
this()는 현재 클래스의 다른 생성자를 호출할 때 사용되며, 이를 생성자 체이닝(Constructor Chaining)이라고 부릅니다. 아래 예제에서는 두 숫자의 합과 곱을 구하면서 this()의 사용법을 살펴보겠습니다.
예제 개요
입력
입력값은 다음과 같이 가정합니다.
두 숫자는 12와 30으로 정의됨
출력
기대하는 출력 결과는 다음과 같습니다.
합계: 42 곱: 360
알고리즘
1단계 - 시작(START) 2단계 - 정수형 변수 my_sum 선언 3단계 - 메인 클래스에서 입력으로 사용될 숫자에 대한 'this' 참조 정의 4단계 - 'this' 생성자가 호출되어 현재 클래스의 다른 생성자 실행 5단계 - 합계를 출력하기 위한 별도의 display() 함수 정의 6단계 - 클래스 객체를 생성하고 함수를 호출하여 결과 출력
예제 1: 두 수의 합 계산
아래 코드는 매개변수가 없는 기본 생성자에서 this(12, 30)을 호출하여 매개변수가 있는 생성자를 실행하고, 두 숫자의 합을 계산합니다.
public class Main {
int my_sum;
Main() {
this(12, 30);
}
Main(int my_input_1, int my_input_2) {
System.out.println("정의된 숫자: " + my_input_1 + " 그리고 " + my_input_2);
this.my_sum = my_input_1 + my_input_2;
}
void display() {
System.out.println("합계: " + my_sum);
}
public static void main(String[] args) {
Main my_object = new Main();
my_object.display();
}
}출력 결과
정의된 숫자: 12 그리고 30 합계: 42
예제 2: 두 수의 곱 계산
같은 원리로, 이번에는 두 숫자의 곱을 계산해 보겠습니다.
public class Main {
int my_product;
Main() {
this(12, 30);
}
Main(int my_input_1, int my_input_2) {
System.out.println("정의된 숫자: " + my_input_1 + " 그리고 " + my_input_2);
this.my_product = my_input_1 * my_input_2;
}
void display() {
System.out.println("두 값의 곱: " + my_product);
}
public static void main(String[] args) {
Main my_object = new Main();
my_object.display();
}
}출력 결과
정의된 숫자: 12 그리고 30 두 값의 곱: 360
this() 사용 시 주의사항
this()를 활용할 때는 몇 가지 중요한 규칙을 기억해야 합니다.
this()는 반드시 생성자 내부에서만 사용할 수 있습니다.this()호출은 생성자의 첫 번째 문장이어야 하며, 그렇지 않으면 컴파일 오류가 발생합니다.- 생성자 자기 자신을 재귀적으로 호출하면 무한 루프에 빠질 수 있으므로 주의해야 합니다.
- 생성자 오버로딩과 함께 사용하면 코드 중복을 줄이고 유지보수성을 크게 향상시킬 수 있습니다.
이처럼 this()를 활용한 생성자 체이닝은 객체 초기화 로직을 한곳에 모아 코드의 일관성과 가독성을 높이는 효과적인 기법입니다.