본문 바로가기

Java/Java Advance

Java Constructor Overloading - 다양한 객체 초기화 방법

728x90
반응형

자바에서 Constructor Overloading은 여러 생성자를 정의하여 객체를 다양한 방법으로 초기화하는 기술입니다. Constructor Overloading의 개념과 활용을 설명하고, 예제를 통해 다양한 초기화 방법을 살펴보겠습니다.

Constructor Overloading의 개념

Constructor Overloading은 동일한 클래스 내에서 여러 개의 생성자를 정의하는 것을 의미합니다. 각 생성자는 서로 다른 매개변수 목록을 가지며, 객체를 다양한 방식으로 초기화할 수 있게 해줍니다. 이렇게 함으로써 동일한 클래스를 사용하면서 다양한 상태의 객체를 생성할 수 있습니다.

다음은 Constructor Overloading을 활용한 예제 코드입니다.

public class User03 {
    String name;
    int javaLevel;

    public User03() {
        System.out.println("나는 생성자");
        name = "홍길동";
        javaLevel = 0;
    }

    public User03(String str) {
        System.out.println("나는 String을 인자로 받아 name을 초기화하는 생성자");
        name = str;
    }

    public User03(int i) {
        System.out.println("나는 int를 인자로 받아 javaLevel을 초기화하는 생성자");
        javaLevel = i;
    }

    public User03(String str, int i) {
        System.out.println("나는 String, int를 인자로 받아 name, javaLevel을 초기화하는 생성자");
        name = str;
        javaLevel = i;
    }

    public String getName() {
        return name;
    }

    public int getJavaLevel() {
        return javaLevel;
    }

    public static void main(String[] args) {
        System.out.println("=====================");
        User03 user01 = new User03();
        System.out.println("name : " + user01.getName());
        System.out.println("javaLevel : " + user01.getJavaLevel());

        System.out.println("=====================");
        User03 user02 = new User03("홍길순");
        // 상태값을 설정하지 않은(초기화하지 않은) javaLevel의 출력값은 0
        System.out.println("name : " + user02.getName());
        System.out.println("javaLevel : " + user02.getJavaLevel());

        System.out.println("=====================");
        User03 user03 = new User03(100);
        // 상태값을 설정하지 않은(초기화하지 않은) name의 출력값은 null
        System.out.println("name : " + user03.getName());
        System.out.println("javaLevel : " + user03.getJavaLevel());

        System.out.println("=====================");
        User03 user04 = new User03("이순신", 200);
        System.out.println("name : " + user04.getName());
        System.out.println("javaLevel : " + user04.getJavaLevel());
    }
}

 

위 코드에서 주목해야 할 점은 다음과 같습니다.


- `User03` 클래스에는 여러 개의 생성자가 정의되어 있습니다. 각 생성자는 다른 매개변수를 받아 객체를 초기화합니다.

- `main` 메서드에서 여러 가지 생성자를 사용하여 객체를 생성하고 초기화하는 방법을 보여줍니다.

Constructor Overloading을 사용하면 동일한 클래스로부터 다양한 초기화 방법을 제공할 수 있습니다. 이를 통해 객체를 생성할 때 필요한 정보를 유연하게 전달하고, 다양한 상태의 객체를 생성할 수 있습니다. Constructor Overloading은 자바에서 객체 지향 프로그래밍을 구현하는 데 유용한 기술 중 하나입니다.

728x90
반응형