728x90
반응형
생성자(Constructor)
생성자는 객체가 생성될 때 초기화를 담당하는 특별한 메서드로,
객체를 사용하기 전에 필요한 설정을 해주는 역할을 합니다.
1. 생성자의 개념
생성자는 클래스의 인스턴스(객체)를 생성할 때 호출되는 메서드입니다.
객체를 생성하기 위해 new 키워드와 함께 클래스의 생성자를 호출하면, 해당 클래스의 인스턴스가 생성되고 초기화 과정이 수행됩니다.
생성자는 클래스 이름과 동일하며, 반환 값이 없습니다.
2. 생성자의 특징
- 생성자는 클래스의 멤버 메서드입니다. 하지만 일반적인 메서드와는 다르게 반환 타입이 없으며, 클래스 이름과 동일한 이름을 가집니다.
- 생성자는 객체가 생성될 때 자동으로 호출되며, 객체의 초기화를 담당합니다.
- 생성자는 다중 정의(Overloading)가 가능합니다. 즉, 매개변수의 타입이나 개수를 다르게하여 여러 개의 생성자를 정의할 수 있습니다.
- 생성자를 명시적으로 선언하지 않으면, 컴파일러가 자동으로 기본 생성자를 생성합니다. 기본 생성자는 매개변수가 없고 아무 동작도 수행하지 않는 형태입니다.
3. 생성자의 활용
- 객체의 초기 상태 설정
- 생성자를 사용하여 객체의 초기 상태를 설정할 수 있습니다.
- 매개변수 전달
- 생성자는 매개변수를 전달받아 객체 내부의 필드를 초기화하는 역할을 합니다.
- 객체 생성 시 필요한 정보를 전달하여 객체를 초기화할 수 있습니다.
- 오버로딩을 통한 다양한 초기화 방법 제공
- 생성자를 다중 정의하여 매개변수의 조합에 따라 다양한 초기화 방법을 제공할 수 있습니다.
4. 생성자의 종류
- 기본 생성자 (Default Constructor)
- 매개변수를 가지지 않는 생성자로, 클래스에 명시적으로 정의하지 않아도 컴파일러가 자동으로 생성해줍니다.
- 기본 생성자는 매개변수가 없으므로 객체를 생성할 때 인자를 전달하지 않아도 됩니다.
- 주로 객체의 필드를 기본값으로 초기화하는 역할을 수행합니다.
- 클래스에 다른 생성자가 정의되어 있는 경우, 명시적으로 기본 생성자를 정의하지 않으면 컴파일러가 자동으로 생성해주지 않습니다.
- 매개변수를 받는 생성자 (Parameterized Constructor)
- 하나 이상의 매개변수를 가지는 생성자로, 객체 생성 시 인자를 전달하여 객체의 필드를 초기화합니다.
- 매개변수를 통해 객체를 생성하면서 동시에 필드 값을 설정할 수 있습니다.
- 여러 개의 매개변수를 가질 수 있으며, 매개변수의 타입과 개수에 따라 다양한 생성자를 정의할 수 있습니다.
- 매개변수를 받는 생성자를 정의하면, 기본 생성자는 컴파일러가 자동으로 생성해주지 않습니다.
- 다중 생성자 정의
- 클래스는 여러 개의 생성자를 가질 수 있습니다. 다중 생성자를 정의함으로써 다양한 방식으로 객체를 생성할 수 있습니다.
- 생성자 오버로딩을 통해 매개변수의 조합에 따라 다른 동작을 수행하는 생성자를 정의할 수 있습니다.
- 요약
- 기본 생성자는 매개변수가 없고, 객체의 필드를 기본값으로 초기화합니다.
- 매개변수를 받는 생성자는 객체 생성 시 인자를 전달하여 객체의 필드를 초기화합니다.
- 클래스에 생성자를 정의하지 않으면 기본 생성자가 자동으로 생성되지만, 매개변수를 받는 생성자를 명시적으로 정의하면 기본 생성자는 자동으로 생성되지 않습니다.
- 다중 생성자를 정의하여 다양한 방식으로 객체를 생성할 수 있습니다. 생성자 오버로딩을 통해 매개변수의 조합에 따라 다른 동작을 수행할 수 있습니다.
5. 예제 코드
// 자동차 클래스 예제
public class Car {
String color;
String model;
int speed;
// 매개변수를 받는 생성자
public Car(String color, String model, int speed) {
this.color = color;
this.model = model;
this.speed = speed;
}
// 기본 생성자
public Car() {}
public void printStatus() {
System.out.println("Color: " + color);
System.out.println("Model: " + model);
System.out.println("Speed: " + speed);
}
// 실행 예제
public static void main(String[] args) {
Car myCar1 = new Car("Red", "Sports Car", 100);
myCar1.printStatus();
Car myCar2 = new Car();
myCar2.printStatus();
// Color: Red
// Model: Sports Car
// Speed: 100
}
}
위 예제 코드는 자동차를 나타내는 Car 클래스를 정의하고, 생성자를 활용하여 객체를 초기화하는 예제입니다.
Car 클래스에는 매개변수를 받는 생성자와 기본 생성자가 정의되어 있습니다.
main 메서드에서는 각각의 생성자를 통해 객체를 생성하고, printStatus 메서드를 호출하여 자동차의 상태를 출력합니다.
생성자를 활용하면 객체를 초기화하는 과정을 편리하게 처리할 수 있습니다.
잘못된 정보는 댓글로 알려주시면 감사하겠습니다.
728x90
반응형
'Java' 카테고리의 다른 글
Java - 14. 자바의 내부 클래스(Inner Class) - 클래스 안에 클래스 (0) | 2023.07.16 |
---|---|
Java - 13. 자바의 속성(Fields) - 객체의 상태를 표현하는 데이터 저장 공간 (0) | 2023.07.15 |
Java - 11. 자바의 함수(function)과 메서드(method)와의 차이점 (0) | 2023.07.13 |
Java - 10. 자바의 메서드(method) (0) | 2023.07.12 |
Java - 9. 자바 배열(Array) 이해하기. (0) | 2023.07.11 |