본문 바로가기

Java/이론

Inner Class

1. 멤버 이너 클래스(member inner class) → 생성자 주입 방식

클래스 내부에서 선언된 내부 클래스를 멤버 변수처럼 접근

 

2. 정적 이너 클래스(static inner class)

static 키워드를 가지고 있는 이너 클래스를 의미한다.

정적 메서드와 동일하게 아우터 클래스의 정적 멤버에만 접근할 수 있다. 

위 그림을 보면 "200"을 출력하기 위해 InnerClassTest를 생성하지 않아도 된다.

기본적으로 그것이 가능한 것은 static이기 때문이다. static을 올리면 Compile시점에 Data영역에 있는

Data Segment부분에 그대로 업로드되기 때문에 InnerClassTest를 생성하지 않아도 메모리에 있는 것을

가져와서 사용하면 되기 때문이다.

 

3. 지역 이너 클래스(local inner class)

외부 클래스에서 메서드나 블럭에 의해 생성되는 클래스이다.

지역 변수처럼 해당 메서드 내부에서만 한정적으로 사용된다.

(지역 변수는 반드시 final로 선언한다. 생략 시 컴파일러가 삽입)

위 사진을 보면 output 메소드를 통해서 클래스가 선언되었다.

 

4. 익명 이너 클래스(annoymous class)

익명 클래스는 이름이 존재하지 않는 이너 클래스다.

클래스의 선언과 동시에 객체를 생성한다. 단 하나의 객체만을 생성하는 일회용 클래스다.

따라서 생성자를 생성할 수 없다.

 

 

이러한 익명 클래스는 매우 제한적인 용도에 사용되며, 구현해야 하는 메소드가 매우 적은 클래스를

구현할 때 사용된다.