반응형
오늘은 생성자에 대해 알아보도록 하자.
처음 자바를 공부했을 때 생성자를 왜 사용하는지 잘 모르겠으며, 유난히 정확하게 알지 못했던 키워드중 하나이다.
그래서 오늘 다시 복습하면서 생성자에 대해 잊어먹지 않도록 기록하고자 한다.
▷ 생성자
생성자는 인스턴스가 만들어질 때 자동으로 실행되는 메소드이다. 자바에서 객체가 생성될 때 자동으로 호출되어 객체의 초기 상태를 역할을 가진다.
public class Car {
String model;
int year;
// 생성자
public Car(String model, int year) {
this.model = model;
this.year = year;
}
}
▷ 생성자 사용 이유와 특징
생성자의 사용이유를 간단하게 알아보자
- 객체 초기화: 생성자는 객체가 생성될 때 초기화 작업을 수행한다. 이는 객체가 유효한 상태로 존재할 수 있게 한다.
- 코드 가독성: 생성자를 사용하면 코드가 간단하고 직관적이다.
- 필수 매개변수 설정: 생성자를 사용하면 객체 생성 시 필수 매개변수를 설정하도록 강제할 수 있습니다.
생성자의 몇가지 특징이 있다.
- 클래스 이름과 동일: 생성자는 클래스 이름과 동일한 이름을 가진다.
- 반환 타입이 없음: 생성자는 반환 타입이 없다 (메서드와의 주요 차이점 중 하나)
- 자동 호출: 객체가 생성될 때 자동으로 호출된다.
- 오버로딩 가능: 생성자는 여러 개 정의될 수 있으며, 각기 다른 매개변수를 가질 수 있다. ( =생성자 오버로딩(Constructor Overloading))
아래 예시를 통해 특징들을 확인해보자.
public class Car { // 클래스 이름 : Car
String model;
int year;
// 기본 생성자
public Car() { // 생성자 이름 : Car(클래스 이름과 같음), 반환타입이 존재하지 않음
this.model = "Unknown";
this.year = 0;
}
// 매개변수 있는 생성자
public Car(String model, int year) {
this.model = model;
this.year = year;
}
public static void main(String[] args) {
// 매개변수 있는 생성자 호출
Car car = new Car("Tesla", 2023); // 객체가 생성될 때 자동으로 호출됨
System.out.println("model : " + car.model + ", year : " + car.year);
}
}
//코드 결과
model : Tesla, year : 2023
마지막으로 사용자 정의 생성자와 컴파일러가 삽입하는 기본 생성자에 대해 알아보고 마무리 해보자.
| 사용자 정의 생성자
사용자가 클래스에 생성자를 명시적으로 정의한 경우, 객체를 생성할 때 그 생성자가 된다.
사용자가 정의한 생성자는 객체 초기화를 위해 필요한 작업을 수행함.
| 컴파일러가 삽입하는 기본 생성자
만약 사용자가 클래스에 생성자를 정의하지 않았다면, 자바 컴파일러가 자동으로 기본 생성자를 삽입한다.
이 기본 생성자는 매개변수가 없으며, 클래스의 모든 멤버 변수를 기본값으로 초기화한다.
(기본값은 숫자형 변수는 0, 논리형 변수는 false, 참조형 변수는 null)
// 사용자 정의 생성자가 있는 경우
public class Car {
String model;
int year;
// 사용자 정의 생성자
public Car(String model, int year) {
this.model = model;
this.year = year;
}
public void displayInfo() {
System.out.println("Model: " + model + ", Year: " + year);
}
public static void main(String[] args) {
Car car = new Car("Tesla", 2023); // 사용자 정의 생성자 호출
car.displayInfo();
}
}
// 코드 결과
Model: Tesla, Year: 2023
// 사용자 정의 생성자가 없는 경우
public class Car {
String model;
int year;
public void displayInfo() {
System.out.println("Model: " + model + ", Year: " + year);
}
public static void main(String[] args) {
Car car = new Car(); // 컴파일러가 삽입한 기본 생성자 호출
car.displayInfo();
}
}
// 코드 결과
Model: null, Year: 0
이렇게 생성자에 다시 까먹지 않도록 복습해보았다.
객체의 초기 상태를 설정하고 객체 생성 시 필수적인 작업을 수행하는데 꼭 필요하다.
또한 다양한 초기화 옵션을 이용할 수 있으며 생성자를 적절히 활용하면 코드의 가독성도 높일 수 있다.
잘못된 정보나 오류는 댓글로 부탁드립니다!!
반응형
'언어 공부하기 > JAVA 개념' 카테고리의 다른 글
[Java 자바] 배열(Arrays)에 대한 모든 것 : 기본 개념부터 코드까지 (자바 Arrays) (0) | 2024.07.30 |
---|---|
[Java 자바] this 키워드 사용하는 이유? this에 대해 알아보자 (자바 this) (0) | 2024.07.29 |
[Java 자바] static 키워드 사용하는 이유란? static에 대해 알아보자 (Static) (0) | 2024.07.22 |
[Java 자바] 객체와 인스턴스의 개념 알아보기 (Object, instance) (0) | 2024.07.09 |
[Java 자바] Split() 함수 사용 방법 및 예제 알아보기 (0) | 2024.05.22 |