java

[알림판목록 I] [알림판목록 II] [글목록][이 전][다 음]
[ 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(); // --- (다)
}
}

// ------------ 끝 ---------------





[알림판목록 I] [알림판목록 II] [글 목록][이 전][다 음]
키 즈 는 열 린 사 람 들 의 모 임 입 니 다.