2013-12-14 8 views
0

보통 클래스의 Default 액세스 한정자는 패키지 전용 이며 내부 Local 클래스 또는 내부 익명의 개인용입니다. 하지만 내 멤버에게는 private 멤버가 맘에 들지 않습니다. 우리가 컨테이너 클래스 외부에서 그것을 보려고 할 때 그래서 private입니까 아니면 private 패키지입니까?Member Class 액세스 한정자

답변

1

처럼 팀 B는 기본적으로 모든 진술 (모든 것이 기본적으로 공개 인터페이스를 제외하고)

는 인터페이스에서 제외하고, 패키지 비공개입니다.

다음 코드 세그먼트에서는이를 보여줍니다.

public class OuterClass { 

    @Override 
    public String toString() { 
     return "I am the public outer class"; 
    } 

    static class StaticInnerClass { 
     @Override 
     public String toString() { 
      return "I am the package private inner class"; 
     } 
    } 

    class NonStaticInnerClass { 
     @Override 
     public String toString() { 
      return "I am the package private non static inner class"; 
     } 
    } 

    public static void main(String[] args) { 
     OuterClass oc = new OuterClass(); 
     OuterClass.StaticInnerClass ic = new OuterClass.StaticInnerClass(); 
     NonStaticInnerClass nsic = oc.new NonStaticInnerClass(); 
     System.out.println(oc); 
     System.out.println(ic); 
     System.out.println(nsic); 
     System.out.println(new SecondClass()); 
    } 
} 

class SecondClass { 
    @Override 
    public String toString() { 
     OuterClass oc = new OuterClass(); 
     OuterClass.StaticInnerClass ic = new OuterClass.StaticInnerClass(); 
     OuterClass.NonStaticInnerClass nsic = oc.new NonStaticInnerClass(); 
     return oc.toString() + "\n" + ic.toString() + "\n" + nsic.toString(); 
    } 
} 
2

다르게 지정하지 않으면 모든 항목에 기본 액세스 권한 (개인용 패키지)이 있습니다.

+0

내가 그것의 개인 사용자가 이해되지 않는다 뭐라고하는 방법 – Tony

+0

처럼를 포함하는 것을 차단할 수 있기 때문에 내부 로컬 클래스 기본 수정이 비공개라는 것을 알고? 로컬 변수를 의미합니까? 지역 변수는 비공개가 아닙니다. 로컬 변수이므로 액세스 수정자가 전혀 없습니다. –