¿Puede alguien explicarme por favor cuál es la diferencia entre protected
/public
Clases internas?protected/public Clases internas
Sé que public
clases internas son para evitar tanto como sea posible (como se explica en este article).
Pero por lo que puedo decir, no hay diferencia entre el uso de modificadores protected
o public
.
Tome un vistazo a este ejemplo:
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();
}
}
Todo esto compila y es válida si me declaran InnerFoo
protected
o public
.
¿Qué me estoy perdiendo? Por favor, indícame un caso en el que hay una diferencia al usar protected
o public
.
Gracias.
Ok. Veo mi confusión Debido a que las clases internas son como miembros de la clase adjunta, estaba pensando en términos de miembros protegidos. Gracias. –
@bruno conde: las clases protegidas * son * como miembros protegidos. –
En otras palabras, "protegido" en Java, ya sea aplicado a miembros o clases internas, es diferente de C++ y C#. Otorga acceso a otras clases en el mismo paquete (espacio de nombres). – Qwertie