본문 바로가기

반응형

이번 글에서는 자바의 생성자 오버로딩(Constructor Overloading)을 통해
객체를 다양한 방식으로 초기화하는 방법을 배웁니다.
생성자 오버로딩이란, 같은 이름의 생성자를 매개변수의 수나 타입에 따라 여러 개 정의하는 것을 말합니다.


📦 클래스 코드 (Car.java)

package ch06.sec07.exam04;

public class Car {
	String company = "현대";
	String model;
	String color;
	int maxSpeed;

	Car() {
	}

	Car(String model) {
		this.model = model;
	}

	Car(String model, String color) {
		this.model = model;
		this.color = color;
	}

	Car(String model, String color, int maxSpeed) {
		this.model = model;
		this.color = color;
		this.maxSpeed = maxSpeed;
	}
}

📌 실행 코드 (CarExample.java)

package ch06.sec07.exam04;

public class CarExample {
	public static void main(String[] args) {
		Car car = new Car();

		System.out.println("car.company : " + car.company);
		System.out.println("-".repeat(40));

		car = new Car("자가용");
		System.out.println("car.company : " + car.company);
		System.out.println("car.model : " + car.model);
		System.out.println("-".repeat(40));

		car = new Car("자가용", "빨강");
		System.out.println("car.company : " + car.company);
		System.out.println("car.model : " + car.model);
		System.out.println("car.color : " + car.color);
		System.out.println("-".repeat(40));

		car = new Car("택시", "검정", 200);
		System.out.println("car.company : " + car.company);
		System.out.println("car.model : " + car.model);
		System.out.println("car.color : " + car.color);
		System.out.println("car.maxSpeed : " + car.maxSpeed);
	}
}

💬 코드 설명

  • Car()
    → 매개변수 없는 기본 생성자
  • Car(String model)
    → 모델명만 초기화
  • Car(String model, String color)
    → 모델명과 색상 초기화
  • Car(String model, String color, int maxSpeed)
    → 모델명, 색상, 최고속도까지 모두 초기화
  • 각각의 생성자는 this.필드 = 매개변수 형식으로 필드를 초기화함

💻 실행 결과

car.company : 현대
----------------------------------------
car.company : 현대
car.model : 자가용
----------------------------------------
car.company : 현대
car.model : 자가용
car.color : 빨강
----------------------------------------
car.company : 현대
car.model : 택시
car.color : 검정
car.maxSpeed : 200

📌 간단 정리

생성자 호출 초기화 내용
new Car() company만 초기값 ("현대")
new Car("자가용") model만 설정
new Car("자가용", "빨강") model + color 설정
new Car("택시", "검정", 200) model + color + maxSpeed 설정

💡 포인트 정리

  • 생성자 오버로딩은 매개변수의 개수나 타입이 다르면 여러 개 정의 가능
  • 필요한 정보만 넣어 객체를 생성할 수 있어 유연한 객체 생성이 가능
  • 모든 생성자에서 공통 필드는 기본값으로 설정되거나, 일부만 지정 가능
  • this.필드 = 매개변수 구문은 필드와 매개변수 이름이 동일할 때 사용
댓글