Может кто-нибудь объяснить мне, в чем разница между классами protected
/public
Inner?
Я знаю, что внутренние классы public
должны избегать как можно больше (как описано в этой статье ).
Но из того, что я могу сказать, нет никакой разницы между использованием модификаторов 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();
}
}
Все эти компиляции и действительны, объявляю ли я InnerFoo
protected
или public
.
Что мне не хватает? Пожалуйста, укажите мне случай, когда есть разница в использовании protected
или public
.
Спасибо.