2011-11-10 3 views
0

inner class의 재산권 그럼 내부 클래스의 값을 보여줄 것이다 인쇄하면 우리는 난 .. 그 클래스 i가 동일한 속성 이름을 갖는 inner class ...
이 .... 성질을 갖는 클래스가 놀랍게도 outer class의 클래스 속성으로 .. 때문에 그 사용 this 클래스 이름 .... 왜 thisstatic로 동작 할 수 있습니다 모르겠어요.
어떻게 이것이 왜 클래스와 함께 사용될 수 있습니까?

public class Super { 

int x=10; 
class nest 
{ 
    int x=20; 
    public void show() 
    { 
     int t=Super.this.x; 
     System.out.println(t); 
    } 
} 
public static void main(String a[]) 
{ 
    Super n=new Super(); 
    nest s=n.new nest(); 
    s.show(); 
} 
} 
+0

'nest s = n.new nest();'이것은 실제로 컴파일됩니까? 와우 : D 외부 클래스 만 내부 클래스의 인스턴스를 만들 수 있다고 생각했습니다. – ZeissS

+2

예상대로 "10"이 인쇄됩니다. 왜 다른 것을 기대합니까? –

+0

@ZeissS : 내부 클래스에는 패키지 표시가 있으므로 패키지의 모든 사용자가 패키지에 액세스 할 수 있습니다. –

답변

1

OuterClassName.this.fieldname 상기 내측 클래스 내에서 외측 클래스 인스턴스의 필드 또는 메소드를 참조하는 데 사용되는 구문. 왜 당신이 정적으로 행동한다고 ​​생각하는지 나는 모르겠다.

관련 문제