Qualcuno può spiegarmi qual è la differenza tra protected
/public
Classi interne?protected Inner Classes
So che le classi interne public
devono evitare il più possibile (come spiegato in questo article).
Ma da quello che posso dire, non vi è alcuna differenza tra l'uso dei modificatori protected
o public
.
Date un'occhiata a questo esempio:
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();
}
}
Tutto questo compila ed è valido se dichiaro InnerFoo
protected
oppure public
.
Cosa mi manca? Per favore, indicami un caso in cui c'è una differenza nell'uso di protected
o public
.
Grazie.
Ok. Vedo la mia confusione. Perché le classi interne sono come membri della classe che racchiude io pensavo in termini di membri protetti. Grazie. –
@bruno conde: le classi protette * sono * come membri protetti. –
In altre parole, "protetto" in Java, sia applicato ai membri che alle classi interne, è diverso da C++ e C#. Concede l'accesso ad altre classi nello stesso pacchetto (spazio dei nomi). – Qwertie