Was sind Zugriffsmodifikatoren?
Wollten Sie schon immer definieren, wie Personen auf einige Ihrer Immobilien zugreifen sollen? Sie möchten nicht, dass jemand Ihre Unterwäsche benutzt. Ihre engen Freunde und Verwandten können jedoch Ihren Pullover und möglicherweise Ihr Auto benutzen.
Ähnlich wie Sie eine Zugriffsebene für Ihre Positionen festlegen, steuert Java auch den Zugriff. Sie möchten die Zugriffsebene für Variablen, Methoden und Klassen definieren, je nachdem, auf welche anderen Klassen Sie zugreifen möchten.
Java bietet 4 Ebenen von Zugriffsmodifikatoren. Dies bedeutet, dass Sie den Zugriff auf eine Variable, Methode oder Klasse auf vier Arten ändern können. Diese 4 Möglichkeiten sind privat, öffentlich, geschützt und standardmäßig.
Diese Zugriffsmodifikatoren können auf Felder, Methoden und Klassen angewendet werden (Klassen sind ein Sonderfall, wir werden sie am Ende dieses Artikels betrachten). Hier ist ein kurzer Überblick1 darüber, was die Access Levels
einzelnen sind Access Modifier
:
Tabellenreferenz für Zugriffsmodifikatoren:

Modifikator für privaten Zugriff
Ermöglicht den Zugriff auf eine Variable oder Methode nur in der Klasse, in der sie erstellt wurde. Keine andere Klasse als die Klasse, die die Variable oder Methode erstellt hat, kann darauf zugreifen. Dies ist Ihren inneren Organen sehr ähnlich. Sie sind nur für den Eigentümer zugänglich. Um eine Variable oder Methode privat zu machen, fügen Sie einfach das Schlüsselwort private vor die Variable oder den Methodentyp ein. Verwenden wir privat in einem Codierungsbeispiel. Wenn eine Bank einen Zinssatz von 10% für ihre Kredite bereitstellen möchte, würde sie sicherstellen, dass die Zinsvariable (nehmen wir an int int_rate;
) privat bleibt, so dass keine andere Klasse versuchen würde, darauf zuzugreifen und sie zu ändern. Zum Beispiel;
private String name;
Im obigen Beispiel wird eine Variable namens name erstellt und sichergestellt, dass nur innerhalb der Klasse, aus der sie erstellt wurde, auf sie zugegriffen werden kann.
Ein weiteres Beispiel für eine Methode ist
private void setAge(){ System.out.println("Set Age"); }
Das obige Beispiel stellt sicher, dass auf die Methode setAge nur innerhalb der Klasse zugegriffen werden kann, aus der sie erstellt wurde, und nirgendwo anders.
Modifikator für den öffentlichen Zugriff
Der Modifikator für den öffentlichen Zugriff ist das direkte Gegenteil des Modifikators für den privaten Zugriff. Eine Klasse, Methode oder Variable kann als öffentlich deklariert werden und bedeutet, dass von jeder Klasse aus darauf zugegriffen werden kann. Der Modifikator für den öffentlichen Zugang kann mit einer öffentlichen Schule verglichen werden, an der jeder die Zulassung beantragen und zugelassen werden kann.
Auf eine öffentliche Klasse, Methode oder Variable kann jederzeit von jeder anderen Klasse aus zugegriffen werden.
Um beispielsweise eine Klasse als öffentlich zu deklarieren, benötigen Sie lediglich:
public class Animal{ }
Daher kann jede andere Klasse auf die Animal-Klasse zugreifen.
public int age; public int getAge(){ }
Oben finden Sie Möglichkeiten, eine Variable und eine Methode als öffentlich anzugeben.
Der Standardzugriffsmodifikator
Der Standardzugriffsmodifikator unterscheidet sich von allen anderen Zugriffsmodifikatoren darin, dass er kein Schlüsselwort enthält. Um den Standardzugriffsmodifikator zu verwenden, verwenden Sie einfach keinen der anderen Zugriffsmodifikatoren. Dies bedeutet lediglich, dass Sie einen Standardzugriffsmodifikator verwenden.
Um beispielsweise den Standardzugriffsmodifikator für eine Klasse zu verwenden, verwenden Sie
class Bird{ }
Dies bedeutet im Grunde, dass Sie den Standardzugriffsmodifikator verwenden. Mit dem Standardzugriffsmodifikator können andere Klassen innerhalb desselben Pakets auf eine Variable, Methode oder Klasse zugreifen. Ein Paket ist eine Sammlung verwandter Klassen in einem Dateiverzeichnis. Weitere Informationen zu Paketen finden Sie im Abschnitt zu Paketen.
Auf Variablen, Methoden oder Klassen, die für die Verwendung des Standardzugriffsmodifikators deklariert wurden, kann von keiner anderen Klasse außerhalb des Pakets zugegriffen werden, von dem aus sie deklariert wurden.
int age; void setNewAge(){ }
Oben sind einige Möglichkeiten aufgeführt, den Standardzugriffsmodifikator für eine Variable oder Methode zu verwenden. Vergessen Sie nicht, dass der Standardzugriffsmodifikator kein Schlüsselwort enthält. Das Fehlen der drei anderen Zugriffsmodifikatoren bedeutet, dass Sie den Standardzugriffsmodifikator verwenden.
Modifikator für geschützten Zugriff
Der Modifikator für geschützten Zugriff ist eng mit dem Standardmodifikator für den Zugriff verwandt. Der Modifikator für geschützten Zugriff hat die Eigenschaften des Standardmodifikators für den Zugriff, jedoch mit einer kleinen Verbesserung.
Eine Variable und eine Methode sind die einzigen, die den Modifikator für den geschützten Zugriff verwenden. Die kleine Verbesserung besteht darin, dass eine Klasse außerhalb des Klassenpakets, von dem aus die Variable oder Methode deklariert wurde, auf die Variable oder Methode zugreifen kann. Dies ist jedoch NUR möglich, wenn es von der Klasse erbt.
Die Klasse aus einem anderen Paket, die geschützte Variablen oder Methoden sehen kann, muss die Klasse erweitert haben, die die Variablen oder Methoden erstellt hat.
Beachten Sie, dass ein Standardzugriffsmodifikator ohne den Vorteil der Vererbung genau denselben Zugriff hat wie ein geschützter Zugriffsmodifikator.
Beispiele für die Verwendung des Modifikators für geschützten Zugriff sind nachstehend aufgeführt:
protected int age; protected String getName(){ return "My Name is You"; }
Zugriffsmodifikatoren für Klassen
Standardmäßig können Klassen nur zwei Modifikatoren haben:
- Öffentlichkeit
- kein Modifikator (Standardmodifikator)
Das bedeutet also, dass Klassen niemals auf private
oder gesetzt werden können protected
?
Das ist logisch, warum sollten Sie eine Privatklasse machen wollen? Keine andere Klasse würde es benutzen können. Aber manchmal können Sie eine Klasse in eine andere Klasse einbetten. Diese speziellen Klassen inner classes
können auf privat oder geschützt gesetzt werden, sodass nur die umgebende Klasse darauf zugreifen kann:
public class Car { private String brand; private Engine engine; // ... private class Engine { // ... } }
Im obigen Beispiel kann nur die Car
Klasse die Engine
Klasse verwenden. Dies kann in einigen Fällen nützlich sein.
Andere Klassen können niemals auf protected
oder gesetzt werden private
, da dies keinen Sinn ergibt. Der protected
Zugriffsmodifikator wird verwendet, um Dinge package-private
zu erstellen , aber mit der Option, für Unterklassen zugänglich zu sein. In Java gibt es kein Konzept wie "Unterpakete" oder "Paketvererbung".