JAVA
[JAVA] 생성자 오버로딩
HJLIM
2020. 9. 11. 21:01
자바에서는 다양한 방법으로 객체를 생성할 수 있도록 생성자 오버로딩(Overloading)을 제공한다.
생성자 오버로딩이란 매개 변수를 달리하는 생성자를 여러 개 선언하는 것을 말한다.
즉, 매개 변수의 형식을 가지고 있는 메소드를 여러 개로 정의할 수 있는 방법이다.
만약 기본 생성자가 없는 상태라면 생성자 오버로딩이 불가능하고 생성자 오버로딩 시 매개 변수, 타입, 선언된 순서,
가 기존 생성자와 똑같을 경우 매개 변수 이름만 바꾸는 것은 생성자 오버로딩이라고 볼 수 없다.
//오버로딩이 아님!!
Car(String model, String color){...}
Car(String color, String model){...}
class Car {
String company = "현대";
String model;
String color;
int maxSpeed;
//생성자 1
public Car() {
}
//생성자 2
public Car(String model) {
this(model, "은색", 250);
}
//생성자 3
public Car(String model, String color) {
this(model, color, 250);
}
//생성자 4
Car(String model, String color, int maxSpeed){
this.model = model;
this.color = color;
this.maxSpeed = maxSpeed;
}
}
생성자가 오버로딩이 되어 있을 경우 , new 연산자로 생성자를 호출할 때 제공되는 매개 변수의 값과 타입과
수에 의해 호출될 생성자가 결정된다. 이렇게 변수의 타입과 개수 그리고 순서를 달리하여 생성자 오버로딩을
한 예 이다.
다음은 오버로딩된 생성자를 다른 클래스에서 객체를 생성하는 방법이다.
public class CarExample {
public static void main(String[] args) {
//생성자 1선택
Car car1 = new Car();
System.out.println("car1.company : " + car1.company);
System.out.println();
//생성자 2선택
Car car2 = new Car("그랜저");
System.out.println("car2.company : " + car2.company);
System.out.println("car2.model : " + car2.model);
System.out.println();
//생성자 3선택
Car car3 = new Car("아반떼", "White");
System.out.println("car3.company : " + car3.company);
System.out.println("car3.company : " + car3.model);
System.out.println("car3.company : " + car3.color);
System.out.println();
//생성자 4선택
Car car4 = new Car("산타페", "Black", 250);
System.out.println("car4.company : " + car4.company);
System.out.println("car4.company : " + car4.model);
System.out.println("car4.company : " + car4.color);
System.out.println("car4.company : " + car4.maxSpeed);
System.out.println();
}
}