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.