Java
[Java] Constructor
wwxs
2024. 9. 6. 11:50
Constructor(생성자)
- 인스턴스(객체)가 생성될 때 호출되는 인스턴스 초기화 메서드
- 인스턴스 변수의 초기화 작업에 주로 사용
- 인스턴스 생성 시 실해오디어야 하는 작업에 사용
생성자 조건
- 생성자 이름은 클래스 이름과 동일해야 한다.
- 생성자는 리턴값이 없다.
더보기
class Data_1 { int value; }
class Data_2 {
int value;
// 자바 컴파일러가 제공하는 기본 생성자
// : 매개변수 x, 아무런 내용 x
// Data_2() {}
// 매개변수가 있는 정의 생성자
// : 사용자 정의 생성자를 만드는 경우 컴파일러가 자동으로 기본 생성자를 제거
// : 컴파일러가 자동으로 기본 생성자를 추가하는 경우는 클래스 내에 생성자가 없을 때
Data_2(int x){
value = x;
}
}
class Car {
String color; // 색상
String gearType; // 변속기 종류 - auto(자동), manual(수동)
int door; // 문의 개수
Car() {} // 기본 생성자 - 차를 생성하고 추후 작업
// 정의 생성자에서 다른 생성자 호출 - this
// : 생성자 간의 호출 사용
// - 생성자의 이름으로 클래스 이름 대신 this를 사용
// - 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출 가능
// 생성자 내에서 매개변수와 초기화하려는 인스턴스 변수의 이름이 동일한 경우
// , 변수 이름의 구분을 위해 this 키워드를 사용
// , 객체 자신을 가리키는 참조 변수 this
Car(String color, String gearType, int door){
this.color = color;
this.gearType = gearType;
this.door = door;
}
Car(String color){
// 1. 첫 번째 줄 호출 이유
// : 호출된 생성자가 변수값 초기화를 하는 경우
// : 해당 생성자가 수행하려는 변수의 초기화가 무의미해지는 것을 방지
// this()함수 - 해당 생성자 메서드를 가리킴
this(color, "auto", 4);
door = 5; // 인스턴스 변수 초기화
// - 첫 번째 줄에서 호출 x / this 키워드 사용 x
// Car(color, "auto", 4); - Error
}
void displayInfo() {
System.out.println(color + gearType + door);
}
}
public class Constructor01 {
public static void main(String[] args) {
// 생성자 없이 인스턴스 객체 생성
// : 자바 컴파일러가 '기본 생성자'를 제공
Data_1 d1 = new Data_1();
// Data_2 d2 = new Data_2(); // compile error - 실행 전 오류
Data_2 d2 = new Data_2(5);
Car c1 = new Car(); // 사용자 정의 기본 생성자
c1.color = "red";
c1.door = 4;
c1.gearType = "auto";
c1.displayInfo();
Car c2 = new Car("white", "auto", 2);
c2.displayInfo();
Car c3 = new Car("blue");
c3.displayInfo();
// 매개변수 3개를 지정하는 생성자를 사용하여 객체의 틀을 정의하고
// , 색상만 변경하고 싶은 경우 사용
// 객체 지향 프로그래밍의 this
// 1. this
// : 인스턴스 자신을 가리키는 참조 변수, 인스턴스의 주소가 저장되어 있다.
// : 모든 인스턴스 메서드에서 지역변수로 생략되어 존재
// 2. this(), this(매개변수)
// : 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용
}
}