[작성일: 2023. 01. 25]
생성자 this()
- 같은 클래스 생성자에서 다른 생성자를 호출할 때 사용
- 클래스 이름 대신 this() 사용
- 다른 생성자 호출 시 첫 줄에서만 사용 가능
- 첫 줄이 아닐 경우 에러.
- 코드 중복을 제거하기 위해 생성자들끼리 서로 호출함.
class Car2 {
String color;
String gearType;
int door;
Car2() {
this("white", "auto", 4);
}
// Car2(String color, String gearType, int door)를 호출
Car(String color) {
this(color, "auto", 4);
}
// Car2(String color, String gearType, int door)를 호출
Car2(String color, String gearType, int door) {
this.color = color;
this.gearType = gearType;
this.door = door;
}
}
// 1번과 2번 생성자가 3번을 호출함.
// Car2대신에 this를 작성
// 같은 클래스 안에 있는 생성자끼리 호출할 땐 this를 사용함(규칙)
class Car {
String color;
String gearType;
int door;
Car() { // 값 지정 없음.
color = "white";
gearType = "auto";
door = 4;
// 기본 생성자 : iv의 값을 주지 않았기 때문에 디폴트 값으로 초기화
}
⬇
class Car {
String color;
String gearType;
int door;
Car() {
// Car("white", "auto", 4);
this("white", "auto", 4);
}
// 코드의 중복을 제거한코드
Car(String c, String g, int d) {
color = c;
gearType = g;
door = d;
}
}
참조변수 this
- 인스턴스 자신을 가리키는 참조변수
- 인스턴스의 주소가 저장되어 있음.
- 모든 인스턴스 메서드에 지역변수로 숨겨진 채 존재함.
- 따로 선언하지 않아도 사용 가능.
- 생성자 this()와 전혀 관련 없음.
- 인스턴스 메서드(생성자 포함)에서만 사용 가능.
- 지역변수(lv)와 인스턴스 변수(iv)를 구별할 때 사용
- 같은 클래스 안에서는 생략 가능하지만 항상 사용하는 연습하기
- static 메서드에는 iv 사용 불가 ➡️ this도 사용 불가
Car(String c, String g, int d) {
// color는 iv, c는 lv
color = c;
gearType = g;
door = d;
}
⬇
Car(String color, String gearType, int door) {
// this.color는 iv, color는 lv
this.color = color;
this.gearType = gearType;
this.door = door;
}
🐣 해당 게시글은 자바의 정석(남궁성 님) 영상으로 함께 공부하며 요약/정리한 글입니다.
🐣 입문 개발자가 작성한 글이므로 틀린 내용이나 오타가 있을 수 있습니다.