외부에서 제공되는 다양한 데이터들을 이용해서 객체를 초기화하려면 생성자도 다양화 될 필요가 있습니다. 예를 들어 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) 생성자로 객체를 생성합니다.
이하 다른 부분 또한 비교하면 금방 알 수 있으실겁니다.
'Programming > JAVA' 카테고리의 다른 글
Java - (9) 정적 멤버와 static (0) | 2016.05.15 |
---|---|
Java - (8) 메소드 (Method) (0) | 2016.05.15 |
Java - (6) 객체와 클래스(Class) (0) | 2016.05.04 |
Java - (5) 객체란? 객체 지향 프로그래밍의 특징 (0) | 2016.05.04 |
Java - (4) Array Type (배열 타입) (0) | 2016.05.04 |
WRITTEN BY