(Java) 기본생성자 vs 매개변수 생성자

Jayden·2023년 2월 23일

Java

목록 보기
12/35

기본생성자(default constructor)

  • 매개변수가 없는 생성자입니다.
  • 클래스 내부에 생성자를 정의하지 않아도 자동으로 생성됩니다.
  • 객체를 생성할 때, 인자를 전달하지 않고 생성자를 호출하면 기본생성자가 호출됩니다.
  • 기본적으로 아무런 작업도 수행하지 않는 생성자입니다.
// 기본생성자 예시
public class Person {
    private String name;
    private int age;
    
    // 기본생성자
    public Person() {
        // 아무런 작업도 수행하지 않음
    }
    
    // Getter와 Setter 메소드 생략
    
}

매개변수 생성자(parameterized constructor)

  • 매개변수가 있는 생성자입니다.
  • 객체를 생성할 때, 인자를 전달하여 호출합니다.
  • 매개변수로 전달된 값들을 가지고 객체의 멤버 변수들을 초기화합니다.
  • 클래스 내부에 생성자를 정의해야 하며, 필요한 만큼 여러 개의 매개변수 생성자를 만들 수 있습니다.
// 매개변수 생성자 예시
public class Person {
    private String name;
    private int age;
    
    // 매개변수 생성자
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    // Getter와 Setter 메소드 생략
    
}
위 예시에서 Person 클래스는 name과 age 두 개의 멤버 변수를 가지고 있습니다.

Person 클래스에는 기본생성자와 매개변수 생성자를 각각 작성하였습니다.

기본생성자에서는 아무런 작업도 수행하지 않습니다.

매개변수 생성자에서는 name과 age 멤버 변수를 초기화하는 작업을 수행합니다. 

이 때, this 키워드를 이용하여 멤버 변수를 참조합니다.

기본생성자와 매개변수 생성자를 모두 만들어야 하는 이유?

1. 객체 초기화

객체를 생성할 때, 멤버 변수들에 초기값을 설정해주어야 합니다. 기본생성자는 아무런 작업도 수행하지 않으므로, 매개변수 생성자를 만들어서 객체를 초기화해주어야 합니다.

2. 다형성(polymorphism)

다형성을 구현하려면, 부모 클래스와 자식 클래스 간에 매개변수 생성자를 이용한 상속 관계가 필요합니다. 부모 클래스에서 매개변수 생성자를 만들고, 자식 클래스에서도 이 생성자를 사용하면 다형성을 구현할 수 있습니다.

3. 예외 처리

매개변수 생성자를 이용하여 객체를 생성할 때, 인자의 유효성을 검사하여 예외 처리를 수행할 수 있습니다. 예를 들어, 인자로 전달된 값이 올바른 범위나 형식을 가지는지 검사하고, 이상이 있으면 예외를 던지는 등의 처리를 할 수 있습니다.

따라서, 객체 초기화를 위해서라도 기본생성자와 매개변수 생성자를 모두 만들어주는 것이 좋습니다. 단, 초기화 작업이 필요하지 않은 경우에는 기본생성자만 만들어도 됩니다.

0개의 댓글