Kann mir bitte jemand erklären, was ist der Unterschied zwischen protected
/public
Inner Klassen?geschützt/öffentliche Inner Klassen
Ich weiß, dass public
inneren Klassen so viel wie möglich zu vermeiden sind (wie in diesem article erklärt).
Aber von was ich sagen kann, gibt es keinen Unterschied zwischen protected
oder public
Modifikatoren zu verwenden.
bei diesem Beispiel Werfen Sie einen Blick:
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 dies kompiliert und ist gültig, ob ich erklären InnerFoo
protected
oder public
.
Was fehlt mir? Bitte zeigen Sie mir einen Fall, in dem es einen Unterschied zwischen protected
oder public
gibt.
Danke.
Ok. Ich sehe meine Verwirrung. Da innere Klassen wie Mitglieder der umschließenden Klasse sind, dachte ich in Bezug auf geschützte Mitglieder. Vielen Dank. –
@bruno conde: geschützte Klassen * sind * wie geschützte Mitglieder. –
Mit anderen Worten, "geschützt" in Java, ob auf Mitglieder oder innere Klassen angewendet, unterscheidet sich von C++ und C#. Es gewährt Zugriff auf andere Klassen in demselben Paket (Namespace). – Qwertie