본문 바로가기
쿤즈 Dev/Java

[Java] 생성자 (Constructor) 체이닝

by Koonz:) 2023. 8. 25.
728x90

자바(Java) 프로그래밍은 대부분 클래스를 이용해서 인스턴스를 만들고 이 인스턴스를 조작해서 데이터를 저장하거나 보여주는 기능을 제공한다. 인스턴스 또는 객체를 만들기 위해서는 반드시 생성자가 필요하다.

오늘은 생성자 여러 개를 만들어보고 이 각각의 생성자를 이용해서 체이닝을 하는 방법을 알아보자.


생성자 (Constructor) 체이닝

생성자 체이닝은 한 클래스에서 여러 개의 생성자가 있는 경우 하나의 생성자가 다른 생성자를 호출하는 것을 의미한다. 이를 통해서 불필요한 중복된 코드를 줄이고 생성자의 다양한 형태를 지원하는 유연성을 제공할 수 있다.

 

자바에서 생성자 체이닝은 같은 클래스 내의 다른 생성자를 호출하는 방식으로 구현된다. 생성자 체이닝을 사용하면 여러 생성자가 동일한 초기화 로직을 공유하거나, 다른 생성자의 일부분을 확장하여 더 많은 초기화 작업을 수행할 수 있다.

 

앞서 예제로 사용했던 Person 클래스를 이용해 보자.

public class Person {
    // 멤버 변수
    private int age;
    private String name;
    private String gender;
    private double height;
    private double weight;

    // 기본 생성자
    public Person() {
        this(10, "Unknown");
    }

    // 이름 나이만 받는 생성자
    public Person(int age, String name) {
        this(age, name, "Unknown");
    }

    // 이름, 나이, 성별만 받는 생성자
    public Person(int age, String name, String gender) {
        this(age, name, gender, 0.0, 0.0);
    }

    // 모든 멤버 변수를 받는 생성자
    public Person(int age, String name, String gender, double height, double weight) {
        this.age = age;
        this.name = name;
        this.gender = gender;
        this.height = height;
        this.weight = weight;
    }

    // 메서드
    public void showIntroduce(){
        System.out.println("내 이름은 " + name +", 나이는 " + age + "이다.");
    }
}

public class PersonTest {
    public static void main(String[] args) {
        Person person1 = new Person();
        Person person2 = new Person(30, "koonsland");

        person1.showIntroduce();
        person2.showIntroduce();;
    }
}

 

생성자 내에서 다른 생성자를 부르기 위해서는 'this'라는 키워드를 사용한다. 아무 인자도 없는 생성자를 시작으로 이름, 나이만 받는 생성자와 이름, 나이, 성별을 받는 생성자, 그리고 모든 멤버변수를 받는 생성자를 만들어 두었다.

이제 클래스를 인스턴스로 만들 때 필요한 파라미터들만 넣어서 값을 초기화 해줄 수 있다.


자바에서는 클래스를 만들때 생성자를 이용해야 한다. 이러한 생성자도 메서드이다. 다만 조금 특이하다거나 특화된 메서드라 생각하면 될 것 같다. 자바를 이용해서 스프링부트 프레임워크를 이용한 웹 서비스를 만들 때에도 이 생성자를 어떻게 이용할지 고민을 많이 하게 된다. 기본적인 내용을 이해했다면 바로 복습해 보자.

댓글