logo

Zugriffsmodifikatoren in Java

  1. Modifikator für privaten Zugriff
  2. Rolle des privaten Konstrukteurs
  3. Standardzugriffsmodifikator
  4. Geschützter Zugriffsmodifikator
  5. Modifikator für den öffentlichen Zugriff
  6. Zugriffsmodifikator mit Methodenüberschreibung

In Java gibt es zwei Arten von Modifikatoren: Zugriffsmodifikatoren Und Nichtzugriffsmodifikatoren .

Die Zugriffsmodifikatoren in Java geben die Zugänglichkeit oder den Umfang eines Felds, einer Methode, eines Konstruktors oder einer Klasse an. Wir können die Zugriffsebene von Feldern, Konstruktoren, Methoden und Klassen ändern, indem wir den Zugriffsmodifikator darauf anwenden.

Es gibt vier Arten von Java-Zugriffsmodifikatoren:

    Privat: Die Zugriffsebene eines privaten Modifikators liegt nur innerhalb der Klasse. Es kann nicht von außerhalb der Klasse darauf zugegriffen werden.Standard: Die Zugriffsebene eines Standardmodifikators gilt nur innerhalb des Pakets. Es kann nicht von außerhalb des Pakets darauf zugegriffen werden. Wenn Sie keine Zugriffsebene angeben, wird diese als Standard verwendet.Geschützt: Die Zugriffsebene eines geschützten Modifikators liegt innerhalb des Pakets und außerhalb des Pakets über die untergeordnete Klasse. Wenn Sie die untergeordnete Klasse nicht erstellen, kann von außerhalb des Pakets nicht darauf zugegriffen werden.Öffentlich: Die Zugriffsebene eines öffentlichen Modifikators ist überall. Der Zugriff kann innerhalb der Klasse, außerhalb der Klasse, innerhalb des Pakets und außerhalb des Pakets erfolgen.

Es gibt viele Nicht-Zugriffsmodifikatoren, wie z. B. statisch, abstrakt, synchronisiert, nativ, flüchtig, transient usw. Hier lernen wir nur die Zugriffsmodifikatoren kennen.


Grundlegendes zu Java-Zugriffsmodifikatoren

Lassen Sie uns die Zugriffsmodifikatoren in Java anhand einer einfachen Tabelle verstehen.

Zugriffsmodifikatorinnerhalb der Klasseim PaketAußerhalb des Pakets nur nach UnterklasseAußenverpackung
Privat UNDNNN
Standard UNDUNDNN
Geschützt UNDUNDUNDN
Öffentlich UNDUNDUNDUND

1) Privat

Auf den privaten Zugriffsmodifikator kann nur innerhalb der Klasse zugegriffen werden.

Huffman-Codierungscode

Einfaches Beispiel für einen privaten Zugriffsmodifikator

In diesem Beispiel haben wir zwei Klassen A und Simple erstellt. Eine Klasse enthält ein privates Datenelement und eine private Methode. Wir greifen von außerhalb der Klasse auf diese privaten Mitglieder zu, daher liegt ein Fehler bei der Kompilierung vor.

 class A{ private int data=40; private void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//Compile Time Error obj.msg();//Compile Time Error } } 

Rolle des privaten Konstrukteurs

Wenn Sie einen Klassenkonstruktor privat machen, können Sie die Instanz dieser Klasse nicht von außerhalb der Klasse erstellen. Zum Beispiel:

 class A{ private A(){}//private constructor void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A();//Compile Time Error } } 

Hinweis: Eine Klasse kann nicht privat oder geschützt sein, mit Ausnahme einer verschachtelten Klasse.


2) Standard

Wenn Sie keinen Modifikator verwenden, wird er als behandelt Standard standardmäßig. Auf den Standardmodifikator kann nur innerhalb des Pakets zugegriffen werden. Es kann nicht von außerhalb des Pakets darauf zugegriffen werden. Es bietet mehr Zugänglichkeit als privat. Es ist jedoch restriktiver als geschützt und öffentlich.

wie man in Java von int in string konvertiert

Beispiel für einen Standardzugriffsmodifikator

In diesem Beispiel haben wir zwei Pakete pack und mypack erstellt. Wir greifen von außerhalb ihres Pakets auf die A-Klasse zu, da die A-Klasse nicht öffentlich ist und daher nicht von außerhalb des Pakets auf sie zugegriffen werden kann.

 //save by A.java package pack; class A{ void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A();//Compile Time Error obj.msg();//Compile Time Error } } 

Im obigen Beispiel ist der Gültigkeitsbereich der Klasse A und ihrer Methode msg() standardmäßig festgelegt, sodass von außerhalb des Pakets nicht darauf zugegriffen werden kann.


3) Geschützt

Der geschützter Zugriffsmodifikator ist innerhalb und außerhalb des Pakets zugänglich, jedoch nur durch Vererbung.

Der geschützte Zugriffsmodifikator kann auf das Datenelement, die Methode und den Konstruktor angewendet werden. Es kann nicht auf die Klasse angewendet werden.

Es bietet mehr Zugänglichkeit als der Standardmodifikator.

Beispiel für einen geschützten Zugriffsmodifikator

In diesem Beispiel haben wir die beiden Pakete pack und mypack erstellt. Die Paketklasse „A“ ist öffentlich und kann daher von außerhalb des Pakets aufgerufen werden. Die msg-Methode dieses Pakets ist jedoch als geschützt deklariert, sodass von außerhalb der Klasse nur durch Vererbung auf sie zugegriffen werden kann.

 //save by A.java package pack; public class A{ protected void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B extends A{ public static void main(String args[]){ B obj = new B(); obj.msg(); } } 
 Output:Hello 

4) Öffentlich

Der Modifikator für den öffentlichen Zugriff ist überall zugänglich. Es hat unter allen anderen Modifikatoren den größten Anwendungsbereich.

Beispiel für einen öffentlichen Zugriffsmodifikator

stlc
 //save by A.java package pack; public class A{ public void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } } 
 Output:Hello 

Java-Zugriffsmodifikatoren mit Methodenüberschreibung

Wenn Sie eine Methode überschreiben, darf die überschriebene Methode (d. h. in der Unterklasse deklariert) nicht restriktiver sein.

 class A{ protected void msg(){System.out.println('Hello java');} } public class Simple extends A{ void msg(){System.out.println('Hello java');}//C.T.Error public static void main(String args[]){ Simple obj=new Simple(); obj.msg(); } } 

Der Standardmodifikator ist restriktiver als geschützt. Aus diesem Grund liegt ein Fehler bei der Kompilierung vor.