클래스 내부에서 this라는 키워드를 사용하게 되면, this가 가리키는 것은 해당 클래스를 통해서 생성된 인스턴스 자신을 의미하게 되는 것을 잘 알고 계실 겁니다. 중첩 클래스 내부에서 this라는 키워드를 사용하게 되면, 당연히 중첩 클래스의 인스턴스를 가리키게 되겠죠.
하지만 중첩 클래스 내부에서 바깥 클래스의 인스턴스를 참조해야 하는 경우도 있을 것입니다. 중첩 클래스 내부에서 바깥 클래스의 인스턴스 참조를 진행하기 위해서는, this 앞에 해당 클래스의 이름을 붙여주는 방식으로 사용하게 됩니다.
OutterClass.this.field;
OutterClass.this.method();
그럼 다음과 같이 바깥 클래스 Outter, 그리고 중첩 클래스 Nested가 있는 구조에서 바깥 클래스를 참조하는 예제를 간단하게 살펴보도록 하겠습니다.
public class Outter {
String field = "Outter Field";
void method() {
System.out.println("Outter Method");
}
class Nested {
String field = "Nested Filed";
void method() {
System.out.println("Nested Method");
}
void print() {
System.out.println(this.field);
this.method();
System.out.println(Outter.this.field);
Outter.this.method();
}
}
}
public class ExampleMain {
public static void main(String[] args) {
Outter outter = new Outter();
Outter.Nested nested = outter.new Nested();
nested.print();
}
}
/* 출력
Nested Filed
Nested Method
Outter Field
Outter Method
*/
'Programming > JAVA' 카테고리의 다른 글
중첩 클래스&인터페이스(5) - 익명 객체 1 (0) | 2023.04.13 |
---|---|
중첩 클래스&인터페이스(4) - 중첩 인터페이스 (3) | 2023.04.12 |
중첩 클래스&인터페이스(3) - 중첩 클래스의 접근 제한자 4 : 로컬 클래스 (0) | 2023.04.10 |
중첩 클래스&인터페이스(3) - 중첩 클래스의 접근 제한자 3 : 로컬 클래스 (0) | 2023.04.09 |
중첩 클래스&인터페이스(3) - 중첩 클래스의 접근 제한자 2 (0) | 2023.04.06 |