외부에서 제공되는 다양한 데이터들을 이용해서 객체를 초기화하려면 생성자도 다양화 될 필요가 있습니다. 예를 들어 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) 생성자로 객체를 생성합니다.

이하 다른 부분 또한 비교하면 금방 알 수 있으실겁니다.


WRITTEN BY
SiriusJ

,