2013-12-14 4 views
0

его очевидно, что модификатор доступа по умолчанию для обычного класса является приватным пакетом , и он является закрытым для внутреннего локального класса или внутреннего анонимного , но для меня не очевидно, что членский класс это как частный член когда мы пытаемся увидеть его из-за пределов контейнера класса , так ли он частный или пакет частный?Модификатор доступа класса Member

ответ

1

Как Tim 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

Что вы говорите, не имеет смысла? Вы имеете в виду локальные переменные? Локальные переменные не являются частными - у них нет модификатора доступа, поскольку они локальны. –

Смежные вопросы