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