검색결과 리스트
글
Inner Class(내부 클래스)
언어로그/Java
2011. 4. 12. 00:16
오래전에 Inner Class 개념을 공부하면서 "Thinking In Java 4/e" 을 바탕으로 정리한 내용이다.
1. 외곽클래스의 멤버메서드(static이 아닌)에서는 내부클래스의 객체를 다른 클래스 객체처럼 참조할 수 있다.
2. 외곽클래스의 static메서드에서는 반드시 '외곽클래스명.' 통해 내부클래스 객체를 참조할 수 있다
3. 내부 클래스 내부에서는 외곽클래스의 멤버를 자유롭게 참조할 수 있는데, 이것은 내부클래스가 자신을 생성한
외곽클래스 객체의 참조를 은밀히 가지고 있기 때문이다. 내부클래스 객체 내부에서 '외곽클래스명.this'를 사용하여
접근할 수 있다.
접근할 수 있다.
4. 내부클래스 객체 생성시, 특정 외곽클래스 객체와 연결하고자 할때(앞서 외곽클래스 this참조를 은밀히 갖느다고 했다)에는,
해당 외곽클래스 객체에 대한 참조를 '.new'키워드에 지정해야 한다
5. 지역내부 클래스(local inner class)는 외곽클래스 멤버메서드 내부 또는 코드블록({}로 둘러싸인)에서 정의되고,
객체가 생성되는 것이다. 지역내부 클래스를 사용하는 이유는,
(1) 특정인터페이스를 구현하는 내부 클래스의 객체를 생성후, 그 참조를 반환시거나,
객체가 생성되는 것이다. 지역내부 클래스를 사용하는 이유는,
(1) 특정인터페이스를 구현하는 내부 클래스의 객체를 생성후, 그 참조를 반환시거나,
(2) 클래스의 접근을 일정범위 내로 제한하고자 할때
6. 내부 클래스 왜 필요할까?
내부클래스는 다중상속의 문제점을 해결하는 하나의 방안이다. 여러개의 인터페이스를 구현해서, 다중상속을 구현하지만,
여전히 하나의 추상클래스 밖에 상속하지 못하기 때문에 제한이 있다. 이를 해결하는 것이 내부클래스로, 특정 클래스를
내부클래스가 상속하게 하여 보다쉽게 다중상속의 기능을 제공하게 된다.
내부클래스가 상속하게 하여 보다쉽게 다중상속의 기능을 제공하게 된다.
7. 이벤트 중심 시스템(Event Driven System)과 같은 제어 프레임워크의 구현에서, 내부클래스가 많이 사용된다.
내부클래스를 사용한 제어 프레임워크의 한가지 예제 코드는 다음과 같다.
이벤트 기반 제어프레임워크 소스 예
이벤트를 정의하는 추상클래스 (어떠한 액션을 캡슐화한다)

이벤트를 큐에 쌓고, 순차적으로 실행시키는 컨트롤러 (이벤트들의 행위를 순차적으로 실행한다)

이벤트 추상클래스를 상속하는 구현 이벤트 클래스들 (구체적인 액션 대한 정의)
(불을 켜고, 끄고 벨을 누르고, 프로그램을 종료하는 이벤트들을 내부클래스를 사용해서 정의하였다.)

프로그램을 실행시키는 entry-point 클래스

이벤트 기반 제어프레임워크 소스 예
이벤트를 정의하는 추상클래스 (어떠한 액션을 캡슐화한다)
이벤트를 큐에 쌓고, 순차적으로 실행시키는 컨트롤러 (이벤트들의 행위를 순차적으로 실행한다)
이벤트 추상클래스를 상속하는 구현 이벤트 클래스들 (구체적인 액션 대한 정의)
(불을 켜고, 끄고 벨을 누르고, 프로그램을 종료하는 이벤트들을 내부클래스를 사용해서 정의하였다.)
프로그램을 실행시키는 entry-point 클래스
'언어로그 > Java' 카테고리의 다른 글
| [java] 라이프 게임 (life game) (1) | 2013.02.03 |
|---|---|
| [java] 제13회 한국자바개발자 컨퍼런스 (0) | 2013.01.30 |
| Inner Class(내부 클래스) (0) | 2011.04.12 |
| 컬렉션(Collection) (0) | 2011.04.11 |
| 리플렉션으로 Getter 와 Setter 검사하기 (0) | 2011.04.07 |
| (2) 리플렉션(Reflection) 사용하기 (0) | 2011.04.07 |