Java-Zugriffsmodifikatoren
Java-Zugriffsmodifikatoren
In diesem Tutorial lernen wir den Java Access Modifier, seine Typen und ihre Verwendung anhand von Beispielen kennen.
Was sind Zugriffsmodifikatoren?
In Java werden Zugriffsmodifikatoren verwendet, um die Zugänglichkeit (Sichtbarkeit) von Klassen, Schnittstellen, Variablen, Methoden, Konstruktoren, Datenelementen und den Setter-Methoden festzulegen. Zum Beispiel
class Animal {
public void method1() {...}
private void method2() {...}
}
Im obigen Beispiel haben wir 2 Methoden deklariert:method1() und method2(). Hier,
- Methode1 ist
public
- Dies bedeutet, dass andere Klassen darauf zugreifen können. - Methode2 ist
private
- Dies bedeutet, dass andere Klassen nicht darauf zugreifen können.
Beachten Sie das Schlüsselwort public
und private
. Dies sind Zugriffsmodifikatoren in Java. Sie werden auch als Sichtbarkeitsmodifikatoren bezeichnet.
Hinweis :Sie können den Zugriffsmodifikator von Getter-Methoden nicht festlegen.
Arten von Zugriffsmodifikatoren
Bevor Sie etwas über Arten von Zugriffsmodifikatoren lernen, sollten Sie sich mit Java-Paketen auskennen.
Es gibt vier Zugriffsmodifizierer-Schlüsselwörter in Java und sie sind:
Modifikator | Beschreibung |
Standard | Deklarationen sind nur innerhalb des Pakets sichtbar (Paket privat) |
Privat | Deklarationen sind nur innerhalb der Klasse sichtbar |
Geschützt | Deklarationen sind innerhalb des Pakets oder aller Unterklassen sichtbar |
Öffentlich | Erklärungen sind überall sichtbar |
Standardzugriffsmodifikator
Wenn wir keinen Zugriffsmodifikator explizit für Klassen, Methoden, Variablen usw. angeben, wird standardmäßig der Standardzugriffsmodifikator berücksichtigt. Zum Beispiel
package defaultPackage;
class Logger {
void message(){
System.out.println("This is a message");
}
}
Hier der Logger Klasse hat den Standardzugriffsmodifikator. Und die Klasse ist für alle Klassen sichtbar, die zum defaultPackage gehören Paket. Wenn wir jedoch versuchen, den Logger zu verwenden Klasse in einer anderen Klasse außerhalb von defaultPackage erhalten wir einen Kompilierungsfehler.
Privater Zugriffsmodifikator
Wenn Variablen und Methoden deklariert werden private
, kann außerhalb der Klasse nicht auf sie zugegriffen werden. Zum Beispiel
class Data {
// private variable
private String name;
}
public class Main {
public static void main(String[] main){
// create an object of Data
Data d = new Data();
// access private variable and field from another class
d.name = "Programiz";
}
}
Im obigen Beispiel haben wir eine private Variable namens name deklariert und eine private Methode namens display()
. Wenn wir das Programm ausführen, erhalten wir die folgende Fehlermeldung:
Main.java:18: error: name has private access in Data
d.name = "Programiz";
^
Der Fehler wird generiert, weil wir versuchen, auf die private Variable und die private Methode von Data zuzugreifen Klasse aus dem Main Klasse.
Sie fragen sich vielleicht, was passiert, wenn wir auf diese privaten Variablen zugreifen müssen. In diesem Fall können wir die Getter- und Setter-Methode verwenden. Zum Beispiel
class Data {
private String name;
// getter method
public String getName() {
return this.name;
}
// setter method
public void setName(String name) {
this.name= name;
}
}
public class Main {
public static void main(String[] main){
Data d = new Data();
// access the private variable using the getter and setter
d.setName("Programiz");
System.out.println(d.getName());
}
}
Ausgabe :
The name is Programiz
Im obigen Beispiel haben wir eine private Variable namens name . Um auf die Variable aus der äußeren Klasse zuzugreifen, haben wir Methoden verwendet:getName()
und setName()
. Diese Methoden werden in Java getter und setter genannt.
Hier haben wir die Setter-Methode (setName()
), um der Variablen einen Wert zuzuweisen, und die Getter-Methode (getName()
), um auf die Variable zuzugreifen.
Wir haben this
verwendet Schlüsselwort innerhalb von setName(), um auf die Variable der Klasse zu verweisen. Weitere Informationen zu diesem Schlüsselwort finden Sie unter Java this Keyword.
Hinweis Hinweis:Wir können Klassen und Schnittstellen in Java nicht als privat deklarieren. Die verschachtelten Klassen können jedoch als privat deklariert werden. Weitere Informationen finden Sie unter Java Nested and Inner Class.
Geschützter Zugriffsmodifikator
Wenn Methoden und Datenmember deklariert werden protected
, können wir sowohl innerhalb desselben Pakets als auch von Unterklassen darauf zugreifen. Zum Beispiel
class Animal {
// protected method
protected void display() {
System.out.println("I am an animal");
}
}
class Dog extends Animal {
public static void main(String[] args) {
// create an object of Dog class
Dog dog = new Dog();
// access protected method
dog.display();
}
}
Ausgabe :
I am an animal
Im obigen Beispiel haben wir eine geschützte Methode namens display()
im Tier Klasse. Das Tier Klasse wird von Dog geerbt Klasse. Weitere Informationen zur Vererbung finden Sie unter Java-Vererbung.
Dann haben wir ein Objekt Hund erstellt des Hundes Klasse. Mit dem Objekt haben wir versucht, auf die geschützte Methode der Elternklasse zuzugreifen.
Da auf geschützte Methoden von den untergeordneten Klassen aus zugegriffen werden kann, können wir auf die Methode von Animal zugreifen Klasse vom Hund Klasse.
Hinweis :Wir können keine Klassen oder Schnittstellen deklarieren protected
in Java.
Öffentlicher Zugriffsmodifikator
Wenn Methoden, Variablen, Klassen usw. deklariert werden public
, dann können wir von überall darauf zugreifen. Der Modifikator für den öffentlichen Zugriff hat keine Bereichseinschränkung. Zum Beispiel
// Animal.java file
// public class
public class Animal {
// public variable
public int legCount;
// public method
public void display() {
System.out.println("I am an animal.");
System.out.println("I have " + legCount + " legs.");
}
}
// Main.java
public class Main {
public static void main( String[] args ) {
// accessing the public class
Animal animal = new Animal();
// accessing the public variable
animal.legCount = 4;
// accessing the public method
animal.display();
}
}
Ausgabe :
I am an animal. I have 4 legs.
Hier,
- Die öffentliche Klasse Animal wird von Main aus zugegriffen Klasse.
- Die öffentliche Variable legCount wird von Main aus zugegriffen Klasse.
- Die öffentliche Methode
display()
wird von Main aus zugegriffen Klasse.
Zugriffsmodifikatoren in einer Abbildung zusammengefasst
Zugriffsmodifikatoren werden hauptsächlich zur Kapselung verwendet. Ich kann uns dabei helfen, zu steuern, auf welchen Teil eines Programms die Mitglieder einer Klasse zugreifen können. Damit ein Datenmissbrauch verhindert werden kann. Weitere Informationen zur Kapselung finden Sie unter Java-Kapselung.
Java