더북(TheBook)

2.3.2 오버로딩


생성자는 두 가지 이상의 버전으로 제공할 수 있다. 예를 들어 이름이 없는 직원을 쉽게 모델링하려면 급여만 매개변수로 받는 두 번째 생성자를 작성한다.

public Employee(double salary) {

    this.name = " ";

    this.salary = salary;

}


이제 Employee 클래스에는 생성자가 두 개다. 호출되는 생성자는 인수에 따라 결정된다.

Employee james = new Employee("James Bond", 500000);

    // Employee(String, double) 생성자를 호출한다.

Employee anonymous = new Employee(40000);

    // Employee(double) 생성자를 호출한다.


이때는 해당 생성자가 오버로드(overload)(중복 정의)되었다고 한다.

Note ≣

이름은 같지만 매개변수가 다른 메서드가 여러 개 있으면 메서드가 오버로드된 것이다. 예를 들어 각각 int, double, String 등을 매개변수로 받는 println 메서드의 오버로드된 버전이 있다. 생성자 이름은 달리 선택할 여지가 없으므로 일반적으로 생성자를 오버로드한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.