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();

		
	}

}