상세 컨텐츠

본문 제목

[Java] 자바의 내부(nested) 클래스

JAVA Language

by mobile 2012. 10. 7. 21:55

본문

반응형

class Outer {

static class StaticNestedClass {

// static 으로 선언된 변수만 static 내부 클래스 내부에서 사용할 수 있다.

}

class Inner {

...

}

}

내부 클래스는 다음과 같은 종류가 있다.

 타입

선언 방법 

범위 

내부 접근 

 정적 내부 클래스

static nested class 

클래스 내 멤버 

No 

 일반 내부 클래스 

inner [non-static] class 

클래스 내 멤버 

Yes 

 내부 클래스 

local [inner] class 

클래스 내 메서드 내부 

Yes 

 익명 클래스 

anonymous [inner] class 

클래스 내 메서드 내부  

Yes 


일반 내부 클래스(또는 내부 클래스)는 자신을 둘러싼 일반 클래스(또는 Top Level 클래스)가 인스턴스화되지 않으면, 일반 내부 클래스 역시 인스턴스화할 수 없다.


일반 내부 클래스는 탑레벨 클래스내 모든 멤버의 접근이 가능하다. 따라서 접근을 제한시킬 필요가 있는데, 정적 내부 클래스를 사용하는 목적은 특정클래스나 메서드의 접근을 제한하기 위해서 사용한다.


정적 내부 클래스는 탑레벨 클래스의 내부 클래스로 인식하지만 일반 클래스와 동일하며, 탑레벨 클래스 내부 또는 외부에 존재할 수 있다. 별도 독립된 클래스로 만들어 사용할 수 있는데도 불구하고 내부 클래스로 만드는 이유는 관리와 가독성을 강화하기 위해서 이다.


정적 내부 클래스 생성

// Outer 클래스 외부에서 사용시 다음과 같이 사용하여 생성

Outer.SaticNestedClass i = new Outer.StaticNestedClass();


// Outer 클래스 내부에서는 다음과 같이 생성

StaticNestedClass i = new Outer.StaticNestedClass();


익명 클래스는 탑레벨 클래스를 상속받은 클래스에서 메서드 오버라이드 하여 클래스를 재정의 할 수 있는 내부 클래스를 말한다.

반응형

'JAVA Language' 카테고리의 다른 글

[JAVA]자바 환경 설정(JDK)  (1) 2016.07.09
[Java]File 클래스  (0) 2012.10.01
[Java]Random Aceess  (0) 2012.09.30
[Java] 직렬화 대상에서 제외 transient  (0) 2012.09.29
[Java]ObjectInputStream & ObjectOutputStream  (0) 2012.09.29

관련글 더보기

댓글 영역