생성자의 기본 개념
생성자는 클래스의 이름과 동일하며, 반환 타입을 가지지 않는다. 이는 메서드와의 가장 큰 차이점이다. 생성자의 주 목적은 객체 생성 시 초기화 작업을 수행하는 것이다. 예를 들어, 'Car'라는 클래스가 있다면, 그 생성자의 이름도 'Car'가 될 것이다.
class Car {
Car() {
// 생성자 코드
}
}
생성자의 선언과 호출
생성자는 매개변수가 없을 수도 있고, 하나 이상의 매개변수를 가질 수도 있다. 매개변수를 통해 객체 생성 시 필요한 값을 전달할 수 있다. 자바에서 객체를 생성할 때는 new 키워드와 함께 생성자를 호출한다.
Car myCar = new Car(); // 매개변수가 없는 생성자 호출
매개변수가 있는 생성자를 사용하는 경우, 객체 생성 시 해당 값을 제공해야 한다.
Car myCar = new Car("아반떼", 2016, "흰색", 200); // 매개변수가 있는 생성자 호출
기본 생성자(default constructor)
클래스에 생성자를 명시적으로 선언하지 않으면, 자바 컴파일러는 자동으로 기본 생성자를 추가한다. 기본 생성자는 매개변수가 없고 아무런 동작도 수행하지 않는다.
class Car {
// 컴파일러가 자동으로 추가하는 기본 생성자
Car() {
}
}
하지만, 매개변수가 있는 생성자를 하나라도 선언하면, 컴파일러는 기본 생성자를 추가하지 않는다. 이 경우, 명시적으로 기본 생성자를 선언해야 할 수도 있다.
class Car {
Car(String modelName) {
// 생성자 코드
}
Car() {
// 명시적으로 선언한 기본 생성자
}
}
this 참조 변수와 this() 메소드
this 참조 변수는 현재 객체를 가리키는 데 사용된다. 생성자나 메서드 내에서 인스턴스 변수에 접근할 때 유용하다. 매개변수 이름과 인스턴스 변수 이름이 같을 경우, this를 사용하여 둘을 구분할 수 있다.
class Car {
private String modelName;
Car(String modelName) {
this.modelName = modelName; // this를 사용하여 인스턴스 변수를 지정
}
}
this() 메소드는 생성자 내부에서 다른 생성자를 호출할 때 사용한다. 이를 통해 코드의 중복을 줄일 수 있다.
class Car {
private String modelName;
private int modelYear;
Car(String modelName) {
this(modelName, 0); // 다른 생성자 호출
}
Car(String modelName, int modelYear) {
this.modelName = modelName;
this.modelYear = modelYear;
}
}
생성자는 객체의 초기 상태를 설정하는 중요한 역할을 한다. 올바른 생성자를 사용하면 코드의 유지 보수성과 가독성이 크게 향상된다.
반응형
'개발 > 자바' 카테고리의 다른 글
자바 JPA, Spring Data JPA, MyBatis (0) | 2024.03.26 |
---|---|
스프링 프레임워크 AOP에 대해.. (0) | 2024.03.25 |
메소드 정리 (1) | 2024.02.02 |
자바에서 클래스 선언과 인스턴스 생성 기초 이해하기 (0) | 2024.02.01 |
자바 클래스의 이해: 필드, 메소드, 생성자로 알아보는 객체 지향 프로그래밍 기초 (0) | 2024.01.31 |
댓글