2013-08-13 3 views
3

다음은 클래스 외부에서 호출되는 멤버 내부 클래스의 예입니다.내부/외부 클래스 obj.new

//Program of memeber inner class that is invoked outside a class 

class Outer { 
    private int data=10; 

    class Inner { 
     void msg() { 
      System.out.println("Data: " + data); 
     } 
    } 
} 

class Test { 
    public static void main(String args[]) { 
      Outer obj=new Outer(); 
      Outer.Inner in = obj.new Inner(); 
      in.msg(); 
    } 
} 

사람이 코드 행 explane 수 : Outer.Inner in = obj.new Iner()을; obj.new Inner()의 의미는 무엇입니까? outer 객체는 Iner 클래스의 객체를 생성하는의 참조를 사용

답변

3

OuterInner이 관련되어 있음을 이해하는 것이 중요합니다. 더 구체적으로 Inner 인스턴스를 만들려면Outer 인스턴스가 필요합니다.

Outer.Inner in = obj.new Inner(); 

obj에서 Outer 인스턴스 Inner 인스턴스를 생성한다. 'inobj 사용하게의 data 필드의 상태을 당신은이 두 가지가 inmsg() 방법은 obj를 사용하는 것에 관련되어 있음을 볼 수 있습니다. Inner이 있었다면 staticOuter 어떤 관계가없는 것입니다, 그래서 당신은 그냥이 data 필드를 사용하기 때문에 당신은 단순히 Inner 정적 할 수 없습니다 귀하의 경우에는 물론

Outer.Inner in = new Outer.Inner(); // no Outer instance needed 

를 사용할 수 있습니다.

2
Outer.Inner in = obj.new Iner(); 

, InerOuter 클래스의 일부이기 때문이다. 여기에 more information입니다.

관련 문제