Java/Java: 문법 정리
[Java] 내부 클래스 정리
데브마우스
2024. 1. 13. 18:55
내부 클래스는 클래스 안에 클래스를 작성하는 것입니다.
아래는 내부 클래스 사용 예제입니다.
class OuterClass{
int outer = 20;
class InnerClass {
int inner = 10;
}
}
public class Main {
public static void main(String[] args) {
OuterClass oc = new OuterClass();
// new OuterClass.InnerClass()라고 적을거라 예상했는데 oc.new InnerClass()로 인스턴스화시킵니다.
// 어찌보면 클래스 전에 문자열이오면 패키지 이름으로 인식하기때문에 new 이전에 외부 클래스 이름을 적는걸로 보입니다.
OuterClass.InnerClass ic = oc.new InnerClass();
System.out.println(ic.inner); // 출력: 10
}
}
내부 클래스는 클래스 안에서 외부 클래스의 멤버를 자유롭게 접근할 수 있습니다. (접근제한자가 private 일지라도요!)
주의할 점은 '클래스 안에서' 자유롭게 접근할 수 있습니다. main 메서드처럼 다른 메서드 안에서 동적으로 외부 클래스의 변수에 접근하는건 불가능합니다.
아래는 접근이 불가능한 코드 예제입니다.
// 접근이 불가능한 예제
class OuterClass{
int outer = 20;
class InnerClass {
int inner = 10;
}
}
public class Main {
public static void main(String[] args) {
OuterClass oc = new OuterClass();
OuterClass.InnerClass ic = oc.new InnerClass();
System.out.println(ic.outer);
}
}
내부 클래스도 일반 클래스처럼 인스턴스와 static이 적용됩니다.