[ java ] in KIDS 글 쓴 이(By): ahsarang (.아.사.랑.) 날 짜 (Date): 2001년 9월 11일 화요일 오전 01시 57분 37초 제 목(Title): Re: [질문] 자바 초보 또 질문합니다. 자바와의 악연으로 java를 떠난지 오래건만 악연도 연인지라 그냥 지나쳐 지지는 않는군요. :) 1. 아래 코드가 top-level이라는 개념을 설명할 수 있지 않을까 생각해봅니다. (전 top-level이란 용어는 첨이거덩요. :) b가 a의 inner class라면 main에서 b z = new b(); // --- (가) 이렇게 쓸 수 없고 이렇게 써야죠. a.b obj = new a().new b(); // --- (나) 헌데 nested class이기때문에 (가)와 같이 쓸 수있습니다. a를 통해서가 아닌 direct로 b를 생성할 수 있기때문에 top-level이라는 수식어가 붙는게 아닌가 추측해 봅니다. 연장선상에서 c는 b에게는 top-level nested class가 되겠죠? 그러나 a에게는 top-level이 아닙니다. main에서는 b.c x = new b.c(); // --- (다) 이렇게 c를 생성할 수 밖에 없으니까요. 반면 b에서는 c z = new c(); --- (라) 이게 가능하죠. 이상 제가 생각하는 top-level이었습니다. :) 2. nested/inner class가 필요조건은 아닙니다. 그러나 우아한 모양새를 갖는 코드를 원한다면 활용해봄직 한거 같습니다. class간의 상관관계를 잘 말해주니까요. 마치 C에서 const/static(function)않쓰고도 돌아가는 코드쓰는데는 문제 없는것에 비유할 수 있으려나... // ----------- 예제 시작 ---------------- public class a { public a() { System.out.println("i am class a"); } static class b { public b() { System.out.println("i am class b"); c z = new c(); // --- (라) } static class c { public c() { System.out.println("i am class c"); } } } public static void main(String argv[]) { b z = new b(); // --- (가) b.c x = new b.c(); // --- (다) } } // ------------ 끝 --------------- |