Can someone please explain to me what is the difference between protected / public Inner classes?
I know that public inner classes are to avoid as much as possible (like explained in this article).
But from what I can tell, there is no difference between using protected or public modifiers.
Take a look at this example:
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();
}
}
All of this compiles and is valid whether I declare InnerFoo protected or public.
What am I missing? Please, point me out a case where there's a difference in using protected or public.
Thanks.