반응형
이번 글에서는 자바의 생성자 오버로딩(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.필드 = 매개변수 구문은 필드와 매개변수 이름이 동일할 때 사용
'프로그래밍 > JAVA' 카테고리의 다른 글
45. 객체의 상태를 제어하는 메서드 활용 (0) | 2025.04.28 |
---|---|
44. 가변 인자(Varargs)를 이용한 메서드 작성 (0) | 2025.04.28 |
43. 클래스의 메서드 정의와 호출 (0) | 2025.04.25 |
41. 생성자와 필드 초기화 - 객체의 상태 설정 (0) | 2025.04.25 |
40. 생성자 선언 - 객체 생성과 동시에 값 초기화 (0) | 2025.04.25 |
39. 필드 값 변경과 객체 상태 설정 (3) | 2025.04.25 |