Frage

Ich weiß, dass dies eine sehr einfache Frage, aber es ist eine, die mich immer gestört hat. Wie ich die Dinge zu verstehen, wenn Sie ein Feld privat in Java deklarieren, dann ist es nicht außerhalb dieser Klasse sichtbar. Wenn es geschützt ist, dann ist es zu geerbten Klassen und alles im selben Paket (korrigieren Sie mich, wenn eine der beiden Definitionen ist falsch) zur Verfügung.

Bedeutet dies nicht möglich ist, ein Feld zu erklären, die nur geerbten Klassen und nicht die andere nicht vererbten Klassen im selben Paket zugänglich ist?

Ich schätze, dass es Möglichkeiten, um dieses, aber es gibt Fälle, in denen Sie diese Art von Verhalten haben möchte?

Offensichtlich ist die obige Frage bezieht sich auf Methoden sowie Felder aus.

Vielen Dank.

War es hilfreich?

Lösung

Siehe auch: http://java.sun.com/ docs / Bücher / tutorial / java / javaOO / accesscontrol.html
Paket> Subklassen, man kann nie ein Feld nur sichtbar von Unterklassen, aber nicht von Klassen aus dem gleichen Paket.

Andere Tipps

Grundsätzlich gilt:

  • privat:. Erreichbar nur mit der Klasse
  • public:. Erreichbar mit jeder Klasse
  • geschützt. Erreichbar mit der Klasse, alle geerbten Klassen und die Klassen des aktuellen Pakets (bearbeitet)
  • kein Raum definiert. Erreichbar mit allen Klassen des aktuellen Pakets

Weitere Informationen hier .

Ja, Java geschützter Zugang ist ein wenig auf diese Weise seltsam. Ich kann nicht sofort sehen, warum es überhaupt wünschenswert ist. Persönlich stört es nicht, mich für Felder , wie ich nicht wie nicht-private Felder sowieso (andere als Konstanten), aber das gleiche gilt für die anderen Mitglieder.

.NET nicht über das Konzept der Paket / Namensraum Zugang Sichtbarkeit bei allen, aber es hat eine Alternative, die Montage ist (man denke an „JAR-Datei“ - nicht genau das gleiche, aber in der Nähe). Ehrlich gesagt würde Ich mag Namensraum haben, und Deployment-Einheit Sichtbarkeit Optionen, aber es scheint, ich bin zu Enttäuschung zum Scheitern verurteilt ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top