Java - (7) 생성자 오버로딩(Overloading)
외부에서 제공되는 다양한 데이터들을 이용해서 객체를 초기화하려면 생성자도 다양화 될 필요가 있습니다. 예를 들어 Car 객체를 생성할 때 외부에서 제공되는 데이터가 없다면 기본 생성자로 Car 객체를 생성해야하고, 외부에서 model 데이터가 제공되거나 model과 color가 제공될 경우에도 Car 객체를 생성할 수 있어야 합니다.
그래서 자바는 다양한 방법으로 객체를 생성할 수 있도록 생성자 오버로딩(Overloading) 을 제공합니다.
생성자 오버로딩이란 매개 변수를 달리하는 생성자를 여러 개 선언하는 것을 말합니다.
ex)
public class Car {
Car() { .. }
Car(String model) { ... }
Car(String model, String color) { ... }
Car(String model, String color, int speed) { ... }
}
등과 같이 생성자를 여러 개 선언할 수 있습니다.
하지만 예를 들어
Car(String model, String color) { .. }
Car(String color, String model) { .. }
은 오버로딩이라 할 수 없습니다.
(매개변수의 타입과 갯수, 선언된 순서가 똑같을 경우에, 매개 변수의 이름만 바꾸는 경우)
여튼, 예시와 같이 생성자를 선언했을 때, 아래 예시와 같이 다양한 방법으로 Car 객체를 생성할 수 있습니다.
ex2)
Car car1 = new Car();
Car car2 = new Car("소나타");
Car car3 = new Car("소나타", "흰색");
Car car4 = new Car("소나타", "흰색", 120);
-> 위의 예시 ex) 와 비교하여 살펴보면
new Car()는 기본 생성자로 객체를 생성하고, new Car("소나타")는 Car(String model) 생성자로 객체를 생성합니다.
이하 다른 부분 또한 비교하면 금방 알 수 있으실겁니다.