Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 생성자 체이닝: this()로 하나의 생성자에서 다른 생성자 호출하기

이 글에서는 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()를 활용한 생성자 체이닝은 객체 초기화 로직을 한곳에 모아 코드의 일관성과 가독성을 높이는 효과적인 기법입니다.