Notice
Recent Posts
Recent Comments
Link
관리 메뉴

데브마우스

[Java] 내부 클래스 정리 본문

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이 적용됩니다.