⭐️ this()와 this는 완전히 다른 것⭐️
1. this(): 생성자 간 호출 시 사용
1) 필수 조건
- 생성자 간 호출 시 클래스명 대신 this를 사용
- 생성자 간 호출 시 반드시 첫 줄에서만 호출(초기화 작업 도중 다른 생성자 호출 시 이전 초기화 작업이 무의미해질 수 있기 때문)
class Car {
String color;
String gearType;
int door;
Car() { // Car 클래스의 기본 생성자
this("white", "auto", 4); // Car(String color, String gearType, int door) 호출
}
Car(String color) { // Car 클래스의 매개변수가 1개인 생성자
this(color, "auto", 4); // Car(String color, String gearType, int door) 호출
}
Car(String color, String gearType, int door) { // Car 클래스의 매개변수가 3개인 생성자
this.color = color; // 인스턴스(객체) 자신을 가리키는 참조변수 this
this.gearType = gearType;
this.door = door;
}
}
class ThisEx {
public static void main(String[] args) {
Car c1 = new Car();
Car c2 = new Car("blue");
System.out.println("c1의 color=" + c1.color + ", gearType=" + c1.gearType+ ", door="+c1.door);
System.out.println("c2의 color=" + c2.color + ", gearType=" + c2.gearType+ ", door="+c2.door);
}
}
2. this: 인스턴스(객체) 자신을 가리키는 참조변수
1) 인스턴스 메서드(생성자 포함)에서 사용 가능, static메서드에서 사용 불가
2) 인스턴스변수(iv)와 지역변수(lv)를 구별 할 때 사용
// 인스턴스 변수(iv)와 지역변수(lv)의 이름이 다른 경우, 이름만으로 구별됨
Car(String c, String g, int d) { // 지역변수(lv) c, g, d
color = c; // this.color = c; 이렇게 써야하는데 같은 클래스 내에서 this는 생략 가능
gearType = g;
door = d;
// 인스턴스 변수(iv) clolor, gearType, door
}
// 인스턴스 변수(iv)와 지역변수(lv)의 이름이 같은 경우, 이름만으로 구별할 수 없음
Car(String color, String gearType, int door) { // 지역변수(lv) color, gearType, door
this.color = c; // this를 써서 지역변수와 인스턴스 변수를 구별 할 수 있으며, 이름인 같은 경우 this생략 불가
this.gearType = g;
this.door = d;
// 인스턴스 변수(iv) clolor, gearType, door
}
'Java' 카테고리의 다른 글
Java 클래스간의 관계 - 상속(Inheritance), 포함(Composite) 관계 (0) | 2022.10.10 |
---|---|
Java 변수의 초기화 (0) | 2022.10.10 |
Java 생성자(constructor) (0) | 2022.10.09 |
Java 메서드 오버로딩(method overloading) (0) | 2022.10.09 |
Java static 메서드와 인스턴스 메서드 (0) | 2022.10.04 |