Может кто-нибудь объяснить мне, в чем разница между классами 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.
Спасибо.