Java ger ett antal åtkomstmodifierare för att ställa in åtkomstnivåer för klasser, variabler, metoder och konstruktörer. De fyra åtkomstnivåerna är –
- synliga för paketet, standard. Inga modifierare behövs.
- endast synlig för klassen (privat).
- synlig för världen (Offentlig).
- synlig för paketet och alla underklasser (skyddade).,
Standardåtkomstmodifierare – inget sökord
standardåtkomstmodifierare innebär att vi inte uttryckligen deklarerar en åtkomstmodifierare för en klass, fält, metod etc.
en variabel eller metod som deklarerats utan någon ändring av åtkomstkontroll är tillgänglig för någon annan klass i samma paket. Fälten i ett gränssnitt är implicit offentliga statiska final och metoderna i ett gränssnitt är som standard offentliga.,
exempel
variabler och metoder kan deklareras utan några modifierare, som i följande exempel −
String version = "1.5.1";boolean processOrder() { return true;}
Private Access Modifier – Private
metoder, variabler och konstruktörer som förklaras privata kan endast nås inom den deklarerade klassen själv.
privat åtkomstmodifierare är den mest restriktiva åtkomstnivån. Klass och gränssnitt kan inte vara privata.
variabler som deklareras privata kan nås utanför klassen, om offentliga getter metoder finns i klassen.,
använda den privata modifieraren är det huvudsakliga sättet att ett objekt inkapslar sig och döljer data från omvärlden.
exempel
följande Klass använder privat åtkomstkontroll –
här är Formatvariabeln för Logger-klassen privat, så det finns inget sätt för andra klasser att hämta eller ställa in dess värde direkt.
för att göra denna variabel tillgänglig för omvärlden definierade vi två offentliga metoder: getFormat (), som returnerar värdet för format och setFormat(String), som anger dess värde.,
Public Access Modifier – Public
en klass, metod, konstruktör, gränssnitt, etc. deklarerad publik kan nås från någon annan klass. Därför kan fält, metoder, block som deklareras i en offentlig klass nås från vilken klass som helst som tillhör Java-universum.
om den offentliga klassen vi försöker få tillgång till finns i ett annat paket måste den offentliga klassen fortfarande importeras. På grund av klass arv är alla offentliga metoder och variabler i en klass ärvda av dess underklasser.,
exempel
följande funktion använder offentlig åtkomstkontroll −
public static void main(String arguments) { // ...}
huvudmetoden för ett program måste vara offentlig. Annars kunde det inte anropas av en Java-tolk (t.ex. java) för att köra klassen.
Protected Access Modifier – Protected
variabler, metoder och konstruktörer, som deklareras skyddade i en superklass kan endast nås av underklasserna i andra paket eller någon klass i paketet i den skyddade medlemmarnas klass.
modifieraren för skyddad åtkomst kan inte tillämpas på klass och gränssnitt., Metoder, fält kan deklareras skyddade, men metoder och fält i ett gränssnitt kan inte deklareras skyddade.
skyddad åtkomst ger underklassen en chans att använda hjälpmetoden eller variabeln, samtidigt som en icke-relaterad klass inte försöker använda den.
exempel
följande överordnad klass använder skyddad åtkomstkontroll, för att tillåta dess underordnade klass åsidosätta openSpeaker() metod −
class AudioPlayer { protected boolean openSpeaker(Speaker sp) { // implementation details }}class StreamingAudioPlayer extends AudioPlayer { boolean openSpeaker(Speaker sp) { // implementation details }}
här, om vi definierar openSpeaker() metod som privat, då det inte skulle vara tillgänglig från någon annan klass än AudioPlayer., Om vi definierar det som offentligt skulle det bli tillgängligt för hela omvärlden. Men vår avsikt är att exponera den här metoden endast för dess underklass, det är därför vi har använt skyddad modifierare.
åtkomstkontroll och arv
följande regler för ärftliga metoder tillämpas −
-
metoder som deklareras offentligt i en superklass måste också vara offentliga i alla underklasser.
-
metoder som deklareras skyddade i en superklass måste antingen vara skyddade eller offentliga i underklasser; de kan inte vara privata.,
-
metoder som bekände privat är inte ärvda alls, så det finns ingen regel för dem.