Может кто-нибудь, пожалуйста, объясните мне, в чем разница между protected
/public
Внутренние классы?охраняемые/общедоступные Внутренние классы
Я знаю, что внутренние классы следует избегать как можно больше (как описано в этом article).
Но из того, что я могу сказать, нет никакой разницы между использованием модификаторов protected
или public
.
Взгляните на этот пример:
public class Foo1 {
public Foo1() { }
protected class InnerFoo {
public InnerFoo() {
super();
}
}
}
...
public class Foo2 extends Foo1 {
public Foo2() {
Foo1.InnerFoo innerFoo = new Foo1.InnerFoo();
}
}
...
public class Bar {
public Bar() {
Foo1 foo1 = new Foo1();
Foo1.InnerFoo innerFoo1 = foo1.new InnerFoo();
Foo2 foo2 = new Foo2();
Foo2.InnerFoo innerFoo2 = foo2.new InnerFoo();
}
}
Все это компилирует и действует ли объявить I InnerFoo
protected
или public
.
Что мне не хватает? Пожалуйста, укажите мне случай, когда есть разница в использовании protected
или public
.
Спасибо.
Хорошо. Я вижу свое замешательство. Потому что внутренние классы, как члены охватывающего класса, я думал с точки зрения защищенных членов. Благодарю. –
@bruno conde: защищенные классы * * как защищенные члены. –
Другими словами, «защищенный» в Java, применяемый к членам или внутренним классам, отличается от C++ и C#. Он предоставляет доступ к другим классам в одном пакете (пространство имен). – Qwertie