Steuern des Zugriffs auf Mitglieder einer Klasse

Steuern des Zugriffs auf Mitglieder einer Klasse

Zugriffsstufenmodifikatoren bestimmen, ob andere Klassen ein bestimmtes Feld verwenden oder eine bestimmte Methode aufrufen können. Es gibt zwei Ebenen der Zugriffskontrolle:

  • Auf der obersten Ebene – public oder package-private (kein expliziter Modifikator).
  • Auf der Mitgliederebene – public, private, protected oder package-private (kein expliziter Modifikator).,

Eine Klasse kann mit dem Modifikator public deklariert werden, in diesem Fall ist diese Klasse für alle Klassen überall sichtbar. Wenn eine Klasse keinen Modifikator hat (der Standardwert, auch als paketprivat bezeichnet), ist sie nur innerhalb ihres eigenen Pakets sichtbar (Pakete werden Gruppen verwandter Klassen genannt-Sie erfahren dies in einer späteren Lektion.)

Auf der Mitgliederebene können Sie auch den Modifikator public oder keinen Modifikator (package-private) verwenden, genau wie bei Klassen der obersten Ebene und mit der gleichen Bedeutung., Für Mitglieder gibt es zwei zusätzliche Zugriffsmodifikatoren: private und protected. Der Modifikator private gibt an, dass auf das Element nur in seiner eigenen Klasse zugegriffen werden kann. Der Modifikator protected gibt an, dass auf das Element nur innerhalb seines eigenen Pakets (wie bei package-private) und zusätzlich durch eine Unterklasse seiner Klasse in einem anderen Paket zugegriffen werden kann.

Die folgende Tabelle zeigt den von jedem Modifikator zulässigen Zugriff auf Mitglieder.,Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N private Y N N N

The first data column indicates whether the class itself has access to the member defined by the access level., Wie Sie sehen, hat eine Klasse immer Zugriff auf ihre eigenen Mitglieder. Die zweite Spalte gibt an, ob Klassen im selben Paket wie die Klasse (unabhängig von ihrer Abstammung) Zugriff auf das Mitglied haben. Die dritte Spalte gibt an, ob Unterklassen der außerhalb dieses Pakets deklarierten Klasse Zugriff auf das Mitglied haben. Die vierte Spalte gibt an, ob alle Klassen Zugriff auf das Mitglied haben.

Zugriffsstufen beeinflussen Sie auf zwei Arten., Wenn Sie Klassen verwenden, die aus einer anderen Quelle stammen, z. B. Klassen in der Java-Plattform, bestimmen Zugriffsebenen zunächst, welche Mitglieder dieser Klassen Ihre eigenen Klassen verwenden können. Zweitens müssen Sie beim Schreiben einer Klasse entscheiden, welche Zugriffsebene jede Mitgliedsvariable und jede Methode in Ihrer Klasse haben soll.

Schauen wir uns eine Sammlung von Klassen an und sehen, wie sich Zugriffsebenen auf die Sichtbarkeit auswirken. Die folgende Abbildung zeigt die vier Klassen in diesem Beispiel und wie Sie zusammenhängen.,

Klassen und Pakete des Beispiels zur Veranschaulichung der Zugriffsebenen

Die folgende Tabelle zeigt, wo die Mitglieder der Alpha-Klasse für jeden der Zugriffsmodifikatoren sichtbar sind, die auf sie angewendet werden können.,ha Beta Alphasub Gamma public Y Y Y Y protected Y Y Y N no modifier Y Y N N private Y N N N

Tips on Choosing an Access Level:

If other programmers use your class, you want to ensure that errors from misuse cannot happen., Zugriffsebenen können Ihnen dabei helfen.

  • Verwenden Sie die restriktivste Zugriffsebene, die für ein bestimmtes Mitglied sinnvoll ist. Verwenden Sie private, es sei denn, Sie haben einen guten Grund, dies nicht zu tun.
  • Vermeiden Siepublic Felder mit Ausnahme von Konstanten. (Viele der Beispiele im Tutorial verwenden öffentliche Felder. Dies kann helfen, einige Punkte prägnant zu veranschaulichen, wird jedoch für den Produktionscode nicht empfohlen.) Öffentliche Felder neigen dazu, Sie mit einer bestimmten Implementierung zu verknüpfen und Ihre Flexibilität bei der Änderung Ihres Codes einzuschränken.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.