자바의 내부클래스

geneven의 이미지

학교에서 발표를 하는데 내부클래스라는 것을 하게 되었습니다. 교수의 특성상
자바공부는 전혀 안되고 있고, 객체지향 배운건 C++밖에 없거든요? 내부클래
스라는것이 클래스 안의 클래스라는 것은 알겠습니다. 근데 이 내부클래스가
이용될 만한 곳을 모르겠습니다. 어떤 부분을 만들때 이 내부클래스를 이용할
수 있을까요?

맹고이의 이미지

composition inheritance 로 검색해보세요...

보통 교재에 비교해서 용도를 설명할 것 같은데

실무에서 활용을 말씀하시는 건가요?

휴학생이라서 실무는... =3=33

fender의 이미지

(1) 귀찮을 때 -_-;

예를들어서 GUI 프로그램을 만들 때 마우스 리스너 같은 걸 일일이 별도 클래스로 하는 것은 정말 귀찮습니다. 그렇다고 무작정 메인 클래스가 해당 인터페이스를 구현해버리면 디자인상 문제가 생깁니다. 이럴 때 내부 클래스의 특수한 형태인 익명 클래스를 사용합니다.

(2) 내부 클래스가 부모 클래스를 떠나서 의미가 없을 때

대표적인 예가 간단하게 비동기적으로 처리해야 하는 작업이 있는 경우 Runnable을 구현하는 내부 클래스를 만들어 Thread로 처리할 수 있습니다. 이 때 해당 클래스는 부모 클래스 내부에서만 필요할 뿐 굳이 밖으로 끄집어낼 필요가 없습니다.

(3) 접근 제어 관련...

대표적인 예가 Memento 패턴입니다. 내부 클래스는 부모 클래스의 private 필드나 메소드에 접근할 수 있습니다. 이 점을 응용한 패턴 등에 사용됩니다.

----------------------------
[서명] 그놈 한국 사용자 모임 - 그놈에 대한 모든 것! - 게시판, IRC, 위키, 갤러리 등등...