logo

Publiek versus privé Java

Op Java, openbaar En privaat Zijn trefwoorden die bekend staan ​​als een toegangsmodificator of specificeerder . Het beperkt de reikwijdte of toegankelijkheid van een klasse, bouwer , variabelen , methode s en gegevensleden. Het hangt ervan af waarop het wordt toegepast. Java biedt de vier soorten toegangsmodificatoren: publiek, privé, beschermd , En standaard . Maar in deze sectie zullen we slechts twee publieke en private bespreken, en ook de verschil tussen publieke en private toegangsspecificatie met voorbeeld.

Toegangsmodificatoren bepalen of andere klassen een bepaald veld kunnen gebruiken of een bepaalde methode kunnen aanroepen. Java biedt twee niveaus van toegangscontrole:

    Topniveau:Op dit niveau kunnen we alleen a gebruiken openbaar Lidniveau:Op dit niveau kunnen we gebruiken publiek, privé, beschermd En pakket-privé (als we geen expliciete modifier gebruiken, staat dit bekend als pakket-private).

De volgende tabel toont het toegangsniveau voor leden dat is toegestaan ​​door de publieke en private modifiers.

mysql show-gebruikers
Publiek versus privé Java

Nog steeds niet duidelijk wat de verschillen tussen de twee zijn? Ik zal u een figuur laten zien die laat zien hoe toegangsniveaus de zichtbaarheid beïnvloeden. De volgende afbeelding toont de twee pakketten p1 En p2 . Elk pakket bevat twee klassen Demo1 En Demo2 (in pakket p1), en Demo3 En Demo4 (in pakket p2).

Publiek versus privé Java

De volgende tabel beschrijft de zichtbaarheid van de klassen als we de klassen één voor één openbaar en privé maken. In de bovenstaande afbeelding is Demo1 de enige klasse die zichtbaar is voor elke toegangsmodificator.

Publiek versus privé Java

Laten we het in detail bespreken.

Modificatie voor openbare toegang

U kunt dit specificeren met behulp van de openbaar trefwoord. De reikwijdte of toegankelijkheid ervan is de breedste van alle andere toegangsspecificaties. De variabelen, klassen en methoden die als openbaar zijn gedeclareerd, zijn overal in het programma toegankelijk. Het legt geen beperkingen op aan de reikwijdte van leden van openbare gegevens. Als we methoden en klassen openbaar verklaren, schenden ze ook het principe van inkapseling . We kunnen het ook gebruiken bij de klassen op het hoogste niveau.

Laten we de privétoegangsspecificatie gebruiken in a Java-programma voor een beter begrip.

Demo1.java

vergelijkbare interface in Java
 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(); } } 

Uitvoer

nfa naar dfa
 Javatpoint 

Modificatie voor privétoegang

Het is het tegenovergestelde van de publieke modifier. U kunt dit specificeren met behulp van de privaat trefwoord gevolgd door klassenaam (alleen toegepast op geneste klassen) of methodenaam of gegevenslid. We kunnen de privétoegangsspecificatie niet gebruiken met de klassen op het hoogste niveau of interfaces . De variabelen, methoden en klassen die als privé zijn gedeclareerd, zijn alleen toegankelijk in de klasse waarin ze zijn gedeclareerd, of door de bovenliggende klassen te erven. Het is de meest beperkte toegangsspecificatie in Java. Het is de hoogtevorm van inkapseling.

  • We kunnen niet overschrijven de methoden die als privé zijn gedeclareerd.
  • Als we de private modifier gebruiken met de constructor, voorkomen we dat deze in een subklasse wordt ingedeeld.
  • Het verbergt de klassen voor de andere klassen binnen dezelfde klasse pakket .

Laten we de privétoegangsspecificatie in een Java-programma gebruiken voor een beter begrip.

In het volgende voorbeeld hebben we twee klassen gedeclareerd: Demo1 en Demo2. In de klasse Demo1 hebben we een methode gedefinieerd show() als privé. De klasse Demo2 bevat de methode main() waarin we een object van de klasse Demo1 hebben gemaakt. Daarna proberen we toegang te krijgen tot de privémethode van de klasse Demo1 vanuit de klasse Demo2, dat is niet mogelijk. Maar toch zullen we het programma uitvoeren om te zien welke fout het vertoont.

 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(); } } 

Wanneer we het bovenstaande programma uitvoeren, wordt de volgende fout weergegeven:

Publiek versus privé Java

Verschil tussen publieke en private toegangsspecificatie in Java

Het belangrijkste verschil tussen publieke en private modifiers is de zichtbaarheid ervan. Java categoriseert de zichtbaarheid voor klasleden als volgt:

  • Subklassen in hetzelfde pakket
  • Niet-subklassen in hetzelfde pakket
  • Subklassen in verschillende pakketten
  • Klassen die niet in hetzelfde pakket zitten, noch subklassen
Publiek versus privé Java

Welke moeten we gebruiken?

We moeten de public access modifier gebruiken als we de methode of eigenschap overal zichtbaar willen maken, vanuit andere klassen en instanties van het object. Gebruik de private access modifier als u de methode of eigenschap alleen zichtbaar wilt maken in de eigen klasse. Vermijd openbare velden, behalve constanten.