생성자(Constructor)
객체(인스턴스)가 생성될 때 호출되는 '인스턴스 초기화 메소드'
생성자 조건
클래스명과 동일한 이름을 사용, 리턴값이 없는 메소드 형식
(void 타입이 생략됨)
컴파일러가 제공하는 기본 생성자
클래스에 생성자가 하나도 없을때 자동 생성되는 빈 생성자
매개변수가 없으며 아무런 작업도 하지 않음(구현부 안에 코드가 없음)
class Example1 {
int value;
// 기본 생성자 생략
}
class Example2 {
int value;
// 사용자 정의 생성자
// 컴파일러가 자동으로 기본 생성자를 제거
Example2(int value) {
this.value = value;
}
// 빈 생성자의 경우 직접적인 명시도 가능
Example2() {}
}
사용자 정의 생성자 만들기
class Car {
String color;
String gearType;// auto 자동, manual 수동
int door;
Car() {}// 기본 생성자>> 차를 생성한 뒤 필드값 초기화
// 사용자 정의 생성자
Car(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
Car(String color) {
// 사용자 정의 생성자에서 다른 생성자 호출 가능: this()
// 생성자 이름으로 클래스명 대신 this를 사용한다
// 정의 생성자에서 타 생성자 호출 시 반드시 첫번째 줄에서만 호출 가능
// 호출된 생성자가 변수값을 초기화하는 경우
// 현재 생성자가 수행하는 작업을 유지하기 위함(무의미함 방지)
this(color, "auto", 4); //37번째 줄에 작성한 사용자 정의 생성자의 호출
//객체 생성 시 색상만 지정하는 경우
door = 5;
// this(color, "manual", 4);
// 타 생성자의 호출이 해당 생성자의 기능 이후에 작성되는 경우>> 타 생성자 호출의 결과와 동일
}
}
this 키워드
인스턴스 자신을 참조함 >> 모든 인스턴스 메소드와 생성자 내부에서 사용 가능
this() 키워드
같은 클래스 내의 다른 생성자 호출 >> 중복 코드 제거와 유지보수성 향상에 도움
'java' 카테고리의 다른 글
20. 오버라이딩 (0) | 2025.02.25 |
---|---|
19. 상속 (0) | 2025.02.25 |
실습) 오버로딩 연습 (0) | 2025.02.25 |
17. 메소드-4 오버로딩 (0) | 2025.02.25 |
실습) 야구선수 평가하기 (0) | 2025.02.25 |