I Java, offentlig og privat er søkeord som er kjent som en tilgangsmodifikator eller spesifiser . Det begrenser omfanget eller tilgjengeligheten til en klasse, konstruktør , variabler , metode s, og datamedlemmer. Det kommer an på hvilken det brukes. Java tilbyr fire typer tilgangsmodifikatorer: offentlig, privat, beskyttet , og misligholde . Men i denne delen vil vi bare diskutere to offentlige og private, og også diskutere forskjellen mellom offentlig og privat tilgangsspesifikasjon med eksempel.
Tilgangsmodifikatorer kontrollerer om andre klasser kan bruke et bestemt felt eller påkalle en bestemt metode. Java gir to nivåer av tilgangskontroll:
Følgende tabell viser tilgangsnivået til medlemmer som er tillatt av de offentlige og private modifikatorene.
java stabler
Fortsatt ikke klart forskjellene mellom de to? La meg vise deg en figur som viser hvordan tilgangsnivåer påvirker synlighet. Følgende figur viser de to pakkene p1 og s2 . Hver pakke inneholder to klasser Demo1 og Demo2 (i pakke p1), og Demo3 og Demo4 (i pakke p2).
Tabellen nedenfor beskriver synligheten til klassene hvis vi gjør klassene offentlige og private én etter én. I figuren ovenfor er Demo1 den eneste klassen som er synlig for hver tilgangsmodifikator.
La oss diskutere det i detalj.
Modifikator for offentlig tilgang
Det kan spesifiseres ved å bruke offentlig nøkkelord. Omfanget eller tilgjengeligheten er den bredeste blant andre tilgangsspesifisatorer. Variablene, klassene og metodene som er erklært som offentlige kan nås fra overalt i programmet. Den pålegger ikke begrensninger på omfanget av medlemmer av offentlige data. Hvis vi erklærer metoder og klasser som offentlige, bryter de også med prinsippet om innkapsling . Vi kan også bruke det med klassene på toppnivå.
La oss bruke spesifikasjonen for privat tilgang i en Java-program for bedre forståelse.
Demo1.java
java er lik
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(); } }
Produksjon
Javatpoint
Modifikator for privat tilgang
Det er det motsatte av den offentlige modifikatoren. Det kan spesifiseres ved å bruke privat nøkkelord etterfulgt av klassenavn (brukes bare på nestede klasser) eller metodenavn eller datamedlem. Vi kan ikke bruke spesifikasjonen for privat tilgang med toppnivåklassene eller grensesnitt . Variablene, metodene og klassene som er erklært som private kan bare nås i klassen de er deklarert i, eller ved å arve de overordnede klassene. Det er den mest begrensede tilgangsspesifikasjonen i Java. Det er høydens form for innkapsling.
- Vi kan ikke overstyring metodene som er erklært som private.
- Hvis vi bruker den private modifikatoren med konstruktøren, unngår vi at den blir underklassifisert.
- Den skjuler klassene fra de andre klassene innenfor samme pakke .
La oss bruke spesifikasjonen for privat tilgang i et Java-program for bedre forståelse.
I følgende eksempel har vi deklarert to klasser: Demo1 og Demo2. I klassen Demo1 har vi definert en metode forestilling() som privat. Klassen Demo2 inneholder main()-metoden der vi har laget et objekt av klassen Demo1. Etter det prøver vi å få tilgang til den private metoden til klassen Demo1 fra klassen Demo2, det er ikke mulig. Men likevel vil vi kjøre programmet for å se hvilken feil det viser.
hiba bukhari
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 kjører programmet ovenfor, viser det følgende feil:
Forskjellen mellom offentlig og privat tilgangsspesifikasjon i Java
Den største forskjellen mellom offentlige og private modifikatorer er dens synlighet. Java kategoriserer synligheten for klassemedlemmer som følger:
- Underklasser i samme pakke
- Ikke-underklasser i samme pakke
- Underklasser i forskjellige pakker
- Klasser verken i samme pakke eller underklasser
Hvilken bør vi bruke?
Vi bør bruke public access modifier hvis vi ønsker å gjøre metoden eller egenskapen synlig fra hvor som helst, andre klasser og forekomster av objektet. Bruk modifikatoren for privat tilgang hvis du bare vil gjøre metoden eller egenskapen synlig i sin egen klasse. Unngå offentlige felt bortsett fra konstanter.