2013-02-28 1 views
3

MyOuter이라는 이름의 클래스가 있습니다. 클래스는 MyInner이라는 간단한 내부 클래스로 구성되어 있습니다. 내부 클래스가 어떻게 작동하는지 배우려고 할 때 외부 클래스 private 멤버 변수가 내부 클래스 자체에서 액세스 할 수 있는지 여부를 이해하려고합니다.내부 클래스 개인 멤버 변수 액세스에 관해서

class MyOuter { 
    private int x = 7; 
    // inner class definition 
    class MyInner { 
    public void seeOuter() { 
     System.out.println("Outer x is " + x); 
    } 
    } // close inner class definition 
} // close outer class 

위의 코드는 완전히 합법적입니다. 내부 클래스가 실제로 외부 클래스의 private 멤버에 액세스하고 있습니다. 내부 클래스 도 외부 클래스의 멤버이기 때문에 괜찮습니다. 따라서 외부 클래스 (예 : 인스턴스 메서드)의 모든 멤버가 외부 클래스의 다른 멤버 인 private 에 액세스 할 수있는 것처럼 내부 클래스 (멤버도 가능)는 동일한 작업을 수행 할 수 있습니다.

제 이유가 맞는지 여부를 알려주십시오.

+2

정확하지만 컴파일러에게 문의 할 수 있습니다. – zch

답변

2

내부 클래스는 그 둘러싸는 클래스의 멤버이며 해당 객체의 메서드와 필드에 직접 액세스 할 수 있습니다. 자세한 내용은 Nested Classes을 참조하십시오.

+0

그것도 같은 OP가 아닌가 .... "내부 클래스도 외부 클래스의 멤버입니다. 따라서 외부 클래스의 멤버 (예 : 인스턴스 메서드)가 외부 클래스, 개인 클래스 또는 비공개 클래스, 멤버 - 같은 일을 할 수 있습니다. " – Jayamohan

+1

@Jayamohan, 맞아,이 말은 단지 ** 네, 맞아. **. 그리고 나서 몇 가지 참고 자료를 제공했습니다. 문제가 뭔지 모르겠다. 또한 유권자는 설명에주의를 기울입니까? – mre

+0

예, 답장에 "예"가 포함되어 있다면 좋았을 것입니다. 왜 그런 말을했는지. – Jayamohan