Zugriffsmodifikatoren in Java erklärt

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 Levelseinzelnen sind Access Modifier:

Tabellenreferenz für Zugriffsmodifikatoren:

Tabelle der 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 privateoder 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 classeskö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 CarKlasse die EngineKlasse verwenden. Dies kann in einigen Fällen nützlich sein.

Andere Klassen können niemals auf protectedoder gesetzt werden private, da dies keinen Sinn ergibt. Der protectedZugriffsmodifikator wird verwendet, um Dinge package-privatezu erstellen , aber mit der Option, für Unterklassen zugänglich zu sein. In Java gibt es kein Konzept wie "Unterpakete" oder "Paketvererbung".