In Java, öffentlich Und Privat Sind Schlüsselwörter die als bekannt sind Zugriffsmodifikator oder Spezifizierer . Es schränkt den Umfang oder die Zugänglichkeit einer Klasse ein. Konstrukteur , Variablen , Methode s und Datenmember. Es kommt darauf an, wofür es angewendet wird. Java bietet die vier Arten von Zugriffsmodifikatoren: öffentlich, privat, geschützt , Und Standard . Aber in diesem Abschnitt werden wir nur zwei öffentliche und private diskutieren und auch die diskutieren Unterschied zwischen öffentlichem und privatem Zugriffsspezifizierer mit Beispiel.
Zugriffsmodifikatoren steuern, ob andere Klassen ein bestimmtes Feld verwenden oder eine bestimmte Methode aufrufen können. Java bietet zwei Ebenen der Zugriffskontrolle:
Die folgende Tabelle zeigt die Zugriffsebene für Mitglieder, die von den öffentlichen und privaten Modifikatoren zugelassen wird.
Java-Tutorial für Anfänger
Sind Ihnen die Unterschiede zwischen den beiden immer noch nicht klar? Lassen Sie mich Ihnen eine Abbildung zeigen, die zeigt, wie sich Zugriffsebenen auf die Sichtbarkeit auswirken. Die folgende Abbildung zeigt die beiden Pakete p1 Und p2 . Jedes Paket enthält zwei Klassen Demo1 Und Demo2 (im Paket p1) und Demo3 Und Demo4 (im Paket p2).
Die folgende Tabelle beschreibt die Sichtbarkeit der Klassen, wenn wir die Klassen nacheinander öffentlich und privat machen. In der obigen Abbildung ist Demo1 die einzige Klasse, die für jeden Zugriffsmodifikator sichtbar ist.
Lassen Sie uns das im Detail besprechen.
Modifikator für den öffentlichen Zugriff
Es kann mithilfe von angegeben werden öffentlich Stichwort. Sein Umfang bzw. seine Zugänglichkeit ist unter anderen Zugriffsspezifizierern am weitesten. Auf die als öffentlich deklarierten Variablen, Klassen und Methoden kann von überall im Programm aus zugegriffen werden. Der Umfang öffentlicher Datenelemente wird nicht eingeschränkt. Wenn wir Methoden und Klassen als öffentlich deklarieren, verstoßen sie ebenfalls gegen das Prinzip von Verkapselung . Wir können es auch mit den Top-Level-Klassen verwenden.
Lassen Sie uns den privaten Zugriffsspezifizierer in a verwenden Java-Programm zum besseren Verständnis.
Demo1.java
Kasse mit Git
package p1; public class Demo1 { public void show() { System.out.println('Javatpoint'); } }
Demo2.java
package p2; import p1.*; class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); obj.show(); } }
Ausgabe
Javatpoint
Modifikator für privaten Zugriff
Es ist das Gegenteil des öffentlichen Modifikators. Es kann mithilfe von angegeben werden Privat Schlüsselwort, gefolgt vom Klassennamen (wird nur auf verschachtelte Klassen angewendet) oder dem Methodennamen oder Datenelement. Wir können den privaten Zugriffsspezifizierer nicht mit den Klassen der obersten Ebene oder verwenden Schnittstellen . Auf die als privat deklarierten Variablen, Methoden und Klassen kann nur in der Klasse zugegriffen werden, in der sie deklariert sind, oder durch Erben der übergeordneten Klassen. Es ist der am stärksten eingeschränkte Zugriffsspezifizierer in Java. Es ist die höchste Form der Kapselung.
- Wir können nicht überschreiben die Methoden, die als privat deklariert sind.
- Wenn wir den privaten Modifikator mit dem Konstruktor verwenden, vermeiden wir, dass er in Unterklassen unterteilt wird.
- Es verbirgt die Klassen vor den anderen Klassen innerhalb derselben Paket .
Zum besseren Verständnis verwenden wir den privaten Zugriffsspezifizierer in einem Java-Programm.
Im folgenden Beispiel haben wir zwei Klassen deklariert: Demo1 und Demo2. In der Klasse Demo1 haben wir eine Methode definiert zeigen() als privat. Die Klasse Demo2 enthält die Methode main(), in der wir ein Objekt der Klasse Demo1 erstellt haben. Danach versuchen wir, von der Klasse Demo2 aus auf die private Methode der Klasse Demo1 zuzugreifen, das ist nicht möglich. Dennoch werden wir das Programm ausführen, um zu sehen, welchen Fehler es anzeigt.
class Demo1 { //defining method as private private void show() { System.out.println('Javatpoint'); } } public class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); //trying to access private method of the class Demo1 obj.show(); } }
Wenn wir das obige Programm ausführen, wird der folgende Fehler angezeigt:
abstrakte Klasse vs. Schnittstelle
Unterschied zwischen öffentlichem und privatem Zugriffsspezifizierer in Java
Der Hauptunterschied zwischen öffentlichen und privaten Modifikatoren ist ihre Sichtbarkeit. Java kategorisiert die Sichtbarkeit für Klassenmitglieder wie folgt:
- Unterklassen im selben Paket
- Nicht-Unterklassen im selben Paket
- Unterklassen in verschiedenen Paketen
- Klassen weder im selben Paket noch Unterklassen
Welches sollten wir verwenden?
Wir sollten den öffentlichen Zugriffsmodifikator verwenden, wenn wir die Methode oder Eigenschaft von überall, anderen Klassen und Instanzen des Objekts aus sichtbar machen möchten. Verwenden Sie den Zugriffsmodifikator private, wenn Sie die Methode oder Eigenschaft nur in ihrer eigenen Klasse sichtbar machen möchten. Vermeiden Sie öffentliche Felder mit Ausnahme von Konstanten.