로컬 클래스
함수 안의 클래스
정의
public class Outer {
void method() {
public class MethodInner {
// MethodInner 의 Attribute , Constructor , Method
}
}
}
Main 함수 에서의
사용법
안에서 클래스가 자동 생성이 된다.
Outer outer = new Outer();
outer.method();
외부 클래스의 속성 / 함수 접근
this 를 사용
외부클래스명.this.속성[함수]
Outer.this.Attribute;
Outer.this.method();
public class Outer {
String field = "Outer-field"; // 외부 속성
void method() {
System.out.println("Outer-method");
} // 외부 함수
// TODO: 일반 내부 클래스
class Nested {
String field = "Nested-field"; // 내부 속성
void method() {
System.out.println("Nested-method");
} // 내부 함수
void print() {
System.out.println(this.field); // 중첩 클래스의 속성 접근
this.method(); // 중첩 클래스의 함수 호출
// TODO: 여기 코딩
// 외부 클래스의 속성/함수 접근 : 외부클래스명.this.속성[함수]
System.out.println(Outer.this.field);
Outer.this.method();
}
}
}
}
♠ \ 주의점 / ♠
method 안에 내부 클래스 생성시
지역 변수였던 localVar 가 상수가 되어버린다.
public class Outer {
method() {
int localVar = 0;
class Inner {
localVar = 1; // 불가능
}
}
}
'JAVA' 카테고리의 다른 글
Java - Thread (0) | 2023.10.02 |
---|---|
Java - 익명 클래스 (1) | 2023.10.02 |
Java - 내부클래스 (정적 속성 클래스) (0) | 2023.10.02 |
Java - 내부 클래스 (일반속성 클래스) (0) | 2023.10.02 |
Java - 내부 클래스 (0) | 2023.10.02 |