Få tilgang til modifikatorer i Java

1. Oversikt

I denne opplæringen går vi over tilgangsmodifikatorer i Java, som brukes til å sette tilgangsnivået til klasser, variabler, metoder og konstruktører.

Enkelt sagt, det er fire tilgangsmodifikatorer:offentlig, privat, beskyttet og misligholde (ingen nøkkelord).

Før vi begynner, la oss merke at en klasse på toppnivå kan bruke offentlig eller misligholde bare få tilgang til modifikatorer. På medlemsnivå kan vi bruke alle fire.

2. Standard

Når vi ikke bruker noen nøkkelord eksplisitt, setter Java et misligholde tilgang til en gitt klasse, metode eller eiendom. Standard tilgangsmodifikator kalles også pakke-privat, som betyr at alle medlemmene er synlige i samme pakke men er ikke tilgjengelig fra andre pakker:

pakke com.baeldung.accessmodifiers; offentlig klasse SuperPublic {statisk ugyldig defaultMethod () {...}}

defaultMethod () er tilgjengelig i en annen klasse av samme pakke:

pakke com.baeldung.accessmodifiers; offentlig klasse Offentlig {offentlig Offentlig () {SuperPublic.defaultMethod (); // Tilgjengelig i samme pakke. }}

Den er imidlertid ikke tilgjengelig i andre pakker.

3. Offentlig

Hvis vi legger til offentlig nøkkelord til en klasse, metode eller eiendom da vi gjør det tilgjengelig for hele verden, dvs. at alle andre klasser i alle pakker vil kunne bruke den. Dette er den minst begrensende tilgangsmodifisereren:

pakke com.baeldung.accessmodifiers; offentlig klasse SuperPublic {offentlig statisk ugyldig publicMethod () {...}}

publicMethod () er tilgjengelig i en annen pakke:

pakke com.baeldung.accessmodifiers.another; importere com.baeldung.accessmodifiers.SuperPublic; offentlig klasse AnotherPublic {public AnotherPublic () {SuperPublic.publicMethod (); // Tilgjengelig overalt. La oss merke til en annen pakke. }}

For mer informasjon om hvordan offentlig nøkkelord oppfører seg når det brukes på en klasse, grensesnitt, nestet offentlig klasse eller grensesnitt og metode, se den dedikerte artikkelen.

4. Privat

Enhver metode, eiendom eller konstruktør med privat nøkkelord er kun tilgjengelig fra samme klasse. Dette er den mest begrensende tilgangsmodifisereren og er kjernen i begrepet innkapsling. All data blir skjult fra omverdenen:

pakke com.baeldung.accessmodifiers; offentlig klasse SuperPublic {statisk privat ugyldig privateMethod () {...} privat ugyldig anotherPrivateMethod () {privatMetode (); // bare tilgjengelig i samme klasse. }}

Denne mer detaljerte artikkelen vil vise hvordan privat nøkkelord oppfører seg når det brukes på et felt, konstruktør, metode og til en indre klasse.

5. Beskyttet

Mellom offentlig og privat tilgangsnivåer, det er beskyttet tilgangsmodifikator.

Hvis vi erklærer en metode, eiendom eller konstruktør med beskyttet nøkkelord, kan vi få tilgang til medlemmet fra samme pakke (som med pakke-privat tilgangsnivå) og i tillegg fra alle underklasser i klassen, selv om de ligger i andre pakker:

pakke com.baeldung.accessmodifiers; offentlig klasse SuperPublic {statisk beskyttet ugyldig beskyttetMetode () {...}}

protectedMethod () er tilgjengelig i underklasser (uavhengig av pakke):

pakke com.baeldung.accessmodifiers.another; importere com.baeldung.accessmodifiers.SuperPublic; offentlig klasse AnotherSubClass utvider SuperPublic {offentlig AnotherSubClass () {SuperPublic.protectedMethod (); // Tilgjengelig i underklasse. La oss merke til en annen pakke. }}

Den dedikerte artikkelen beskriver mer om nøkkelordet når det brukes i et felt, metode, konstruktør, indre klasse og tilgjengeligheten i samme pakke eller en annen pakke.

6. Sammenligning

Tabellen nedenfor oppsummerer tilgjengelige tilgangsmodifikatorer. Vi kan se at en klasse, uansett tilgangsmodifikatorer som brukes, alltid har tilgang til medlemmene:

ModifikatorKlassePakkeUnderklasseVerden
offentlig
YYYY
beskyttet
YYYN
misligholde
YYNN
privat
YNNN

7. Konklusjon

I denne korte artikkelen gikk vi over tilgangsmodifikatorer i Java.

Det er god praksis å bruke et mest mulig begrensende tilgangsnivå for et gitt medlem for å forhindre misbruk. Vi bør alltid bruke privat tilgangsmodifikator med mindre det er en god grunn til ikke å.

Offentlig tilgangsnivå skal bare brukes hvis et medlem er en del av et API.

Som alltid er kodeeksemplene tilgjengelige på Github.


$config[zx-auto] not found$config[zx-overlay] not found