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 메서드의 오버로드된 버전이 있다. 생성자 이름은 달리 선택할 여지가 없으므로 일반적으로 생성자를 오버로드한다.