geschützte/öffentliche Innere Klassen
Kann mir jemand bitte erklären, was ist der Unterschied zwischen protected
/public
Innere Klassen?
Ich weiß, dass public
innere Klassen sind zu vermeiden, so viel wie möglich (wie erläutert in diesem Artikel).
Aber was ich sagen kann, es gibt keinen Unterschied zwischen der Verwendung protected
oder public
Modifikatoren.
Werfen Sie einen Blick auf dieses Beispiel:
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();
}
}
Alle diese kompiliert und ist unabhängig davon gültig, ob ich erklären InnerFoo
protected
oder public
.
Was bin ich? Bitte, zeigen Sie mir einen Fall, wo es einen Unterschied in der Verwendung protected
oder public
.
Dank.
InformationsquelleAutor bruno conde | 2009-02-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
protected
zugriffsmodifizierer Schränken Sie den Zugriff aus anderen Klassen als diejenigen, die in dem gleichen Paket und seine Unterklassen.Im Beispiel gezeigt, die
public
undprotected
wird die gleiche Wirkung haben, wie Sie sind, in demselben Paket.Weitere Informationen über die zugriffsmodifizierer, die Die Steuerung des Zugriffs auf Elemente einer Klasse Seite Die Java-Tutorials von Interesse sein können.
conde: protected Klassen wie protected-Elemente.
In anderen Worten, "protected" in Java, ob Mitglieder oder innere Klassen, unterscheidet sich von C++ und C#. Sie gewährt Zugriff auf die anderen Klassen im gleichen package (namespace).
bisschen spät zu der party... aber geschützt in Java erlaubt den Zugriff auf andere Klassen im selben Paket, um das deklarieren der Klasse und aller Unterklassen (ob im selben Paket oder nicht). Aber soweit ich weiß gibt es keine Paket-Hierarchie, wo zugriffsmodifizierer betroffen sind. Das ist, Klassen in Pakete mit dem Präfix den Namen des Pakets von dem deklarieren der Klasse nicht zugreifen.
InformationsquelleAutor coobird
Können Sie nur denken, geschützten inneren Klasse ist protected-Mitglied, so dass es nur Zugang für die Klasse, Paket Unterklasse, jedoch nicht für die Welt.
Darüber hinaus für outter Klasse, gibt es nur zwei access-modifier. Nur public und package.
InformationsquelleAutor wangzhengyi
Seltsame Sache, die in java:
Reine Java: können Sie nicht zurück eine private innere Klasse von einem öffentlichen getter.
In JSP : können Sie nicht zurück eine nicht-öffentlichen innere Klasse von einem öffentlichen getter.
Java-Demo, Die Sie Ausführen Können:
Für JSP, legen Sie nur den Klasse code von oben in den Ordner: com/MeinPaket/MyClass
und "import com.MeinPaket.MyClass" als erste Zeile Quellcode. Dann erstellen Sie eine neue .jsp-Seite mit diesem Quelltext:
Stack Verwendet:
Java8 + Tomcat9
InformationsquelleAutor J.M.I. MADISON