I Java, offentlig och privat är nyckelord som är kända som en åtkomstmodifierare eller specificator . Det begränsar omfattningen eller tillgängligheten för en klass, konstruktör , variabler , metod s och datamedlemmar. Det beror på vilken den används. Java tillhandahåller fyra typer av åtkomstmodifierare: offentlig, privat, skyddad , och standard . Men i det här avsnittet kommer vi bara att diskutera två offentliga och privata, och också diskutera skillnaden mellan offentlig och privat åtkomstspecifikation med exempel.
Åtkomstmodifierare styr om andra klasser kan använda ett visst fält eller anropa en viss metod. Java ger två nivåer av åtkomstkontroll:
Följande tabell visar åtkomstnivån för medlemmar som tillåts av de offentliga och privata modifierarna.
.likar med java
Fortfarande inte klarlagt skillnaderna mellan de två? Låt mig visa dig en figur som visar hur åtkomstnivåer påverkar synligheten. Följande bild visar de två paketen p1 och p2 . Varje paket innehåller två klasser Demo1 och Demo2 (i paket p1), och Demo3 och Demo4 (i paket p2).
Följande tabell beskriver klassernas synlighet om vi gör klasserna offentliga och privata en efter en. I figuren ovan är Demo1 den enda klassen som är synlig för varje åtkomstmodifierare.
Låt oss diskutera det i detalj.
Public Access Modifier
Det kan specificeras genom att använda offentlig nyckelord. Dess räckvidd eller tillgänglighet är den bredaste bland andra åtkomstspecifikationer. Variablerna, klasserna och metoderna som deklarerats som offentliga kan nås från överallt i programmet. Den inför inga begränsningar för omfattningen av medlemmar av offentliga uppgifter. Om vi deklarerar metoder och klasser som offentliga bryter de också mot principen om inkapsling . Vi kan också använda det med toppklasserna.
Låt oss använda specifikationen för privat åtkomst i en Java-program för bättre förståelse.
Demo1.java
java array sorterad
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(); } }
Produktion
java hej världen
Javatpoint
Modifierare för privat åtkomst
Det är motsatsen till den offentliga modifieraren. Det kan specificeras genom att använda privat nyckelord följt av klassnamn (tillämpas endast på kapslade klasser) eller metodnamn eller datamedlem. Vi kan inte använda specificeraren för privat åtkomst med toppnivåklasserna eller gränssnitt . Variablerna, metoderna och klasserna som deklarerats som privata kan endast nås i klassen där de deklareras eller genom att ärva de överordnade klasserna. Det är den mest begränsade åtkomstspecifikationen i Java. Det är höjdformen av inkapsling.
- Vi kan inte åsidosätta metoderna som deklareras som privata.
- Om vi använder den privata modifieraren med konstruktorn undviker vi att den underklassas.
- Det döljer klasserna från de andra klasserna inom samma paket .
Låt oss använda specificeraren för privat åtkomst i ett Java-program för bättre förståelse.
I följande exempel har vi deklarerat två klasser: Demo1 och Demo2. I klassen Demo1 har vi definierat en metod show() som privat. Klassen Demo2 innehåller metoden main() där vi har skapat ett objekt av klassen Demo1. Efter det försöker vi komma åt den privata metoden för klassen Demo1 från klassen Demo2, det är inte möjligt. Men ändå kommer vi att köra programmet för att se vilket fel det visar.
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(); } }
När vi kör programmet ovan visar det följande fel:
Skillnaden mellan Public och Private Access Specifier i Java
Den största skillnaden mellan offentliga och privata modifierare är dess synlighet. Java kategoriserar synligheten för klassmedlemmar enligt följande:
- Underklasser i samma paket
- Icke-underklasser i samma paket
- Underklasser i olika paket
- Klasser varken i samma paket eller underklasser
Vilken ska vi använda?
Vi bör använda public access modifier om vi vill göra metoden eller egenskapen synlig från var som helst, andra klasser och instanser av objektet. Använd modifieraren för privat åtkomst om du vill göra metoden eller egenskapen synlig endast i sin egen klass. Undvik offentliga fält förutom konstanter.