его очевидно, что модификатор доступа по умолчанию для обычного класса является приватным пакетом , и он является закрытым для внутреннего локального класса или внутреннего анонимного , но для меня не очевидно, что членский класс это как частный член когда мы пытаемся увидеть его из-за пределов контейнера класса , так ли он частный или пакет частный?Модификатор доступа класса Member
0
A
ответ
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
Все имеет доступ по умолчанию (который является приватным пакетом), если вы не указали иначе.
(За исключением интерфейсов где все общественное по умолчанию)
, как я знаю, что внутренний локальный класс его модификатор по умолчанию является частным, потому что его личное к может блокировать, которые содержат его как метод – Tony
Что вы говорите, не имеет смысла? Вы имеете в виду локальные переменные? Локальные переменные не являются частными - у них нет модификатора доступа, поскольку они локальны. –