I denne opplæringen vil vi lære om Java Access Modifier, dens typer og hvordan du bruker dem ved hjelp av eksempler.
Hva er tilgangsmodifikatorer?
I Java brukes tilgangsmodifikatorer for å angi tilgjengeligheten (synlighet) for klasser, grensesnitt, variabler, metoder, konstruktører, datamedlemmer og settermetodene. For eksempel,
class Animal ( public void method1() (… ) private void method2() (… ) )
I eksemplet ovenfor har vi erklært to metoder: metode1 () og metode2 (). Her,
- method1 er
public
- Dette betyr at den kan nås av andre klasser. - method2 er
private
- Dette betyr at det ikke er tilgang til andre klasser.
Legg merke til nøkkelordet public
og private
. Dette er tilgangsmodifikatorer i Java. De er også kjent som synlighetsmodifikatorer.
Merk : Du kan ikke angi tilgangsmodifikator for getters-metoder.
Typer tilgangsmodifikator
Før du lærer om typer tilgangsmodifikatorer, må du sørge for at du vet om Java-pakker.
Det er fire nøkkelord for tilgangsmodifikatorer i Java, og de er:
Modifikator | Beskrivelse |
Misligholde | erklæringer er bare synlige i pakken (pakke privat) |
Privat | erklæringer er kun synlige i klassen |
Beskyttet | erklæringer er synlige i pakken eller i alle underklasser |
Offentlig | erklæringer er synlige overalt |
Standard tilgangsmodifikator
Hvis vi ikke eksplisitt spesifiserer noen tilgangsmodifikator for klasser, metoder, variabler osv., Blir standard tilgangsmodifikator som standard vurdert. For eksempel,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Her har Logger-klassen standard tilgangsmodifikator. Og klassen er synlig for alle klassene som tilhører standardpakken. Imidlertid, hvis vi prøver å bruke Logger-klassen i en annen klasse utenfor defaultPackage, får vi en kompileringsfeil.
Privat tilgangsmodifikator
Når variabler og metoder er erklært private
, kan de ikke nås utenfor klassen. For eksempel,
class Data ( // private variable private String name; ) public class Main ( public static void main(String() main)( // create an object of Data Data d = new Data(); // access private variable and field from another class d.name = "Programiz"; ) )
I eksemplet ovenfor har vi erklært en privat variabel som heter navn og en privat metode som heter display()
. Når vi kjører programmet, får vi følgende feil:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
Feilen genereres fordi vi prøver å få tilgang til den private variabelen og den private metoden til dataklassen fra hovedklassen.
Du lurer kanskje på hva om vi trenger tilgang til de private variablene. I dette tilfellet kan vi bruke metoden getters og setters. For eksempel,
class Data ( private String name; // getter method public String getName() ( return this.name; ) // setter method public void setName(String name) ( this.name= name; ) ) public class Main ( public static void main(String() main)( Data d = new Data(); // access the private variable using the getter and setter d.setName("Programiz"); System.out.println(d.getName()); ) )
Utgang :
Navnet er Programiz
I eksemplet ovenfor har vi en privat variabel som heter navn. For å få tilgang til variabelen fra den ytre klassen, har vi brukt metoder: getName()
og setName()
. Disse metodene kalles getter og setter på Java.
Her har vi brukt settermetoden ( setName()
) for å tilordne verdien til variabelen og gettermetoden ( getName()
) for å få tilgang til variabelen.
Vi har brukt this
nøkkelord inne i setName () for å referere til variabelen i klassen. For å lære mer om dette nøkkelordet, besøk Java dette nøkkelordet.
Merk : Vi kan ikke erklære klasser og grensesnitt private i Java. De nestede klassene kan imidlertid erklæres private. For å lære mer, besøk Java Nested og Inner Class.
Beskyttet tilgangsmodifikator
Når metoder og datamedlemmer blir deklarert protected
, kan vi få tilgang til dem i samme pakke så vel som fra underklasser. For eksempel,
class Animal ( // protected method protected void display() ( System.out.println("I am an animal"); ) ) class Dog extends Animal ( public static void main(String() args) ( // create an object of Dog class Dog dog = new Dog(); // access protected method dog.display(); ) )
Utgang :
Jeg er et dyr
I eksemplet ovenfor har vi en beskyttet metode som heter display()
innen dyreklassen. Dyreklassen arves av hundeklassen. For å lære mer om arv, besøk Java Arv.
Vi opprettet deretter en gjenstandshund av hundeklassen. Ved å bruke objektet prøvde vi å få tilgang til den beskyttede metoden til foreldreklassen.
Siden beskyttede metoder er tilgjengelige fra barneklassene, har vi tilgang til metoden for dyreklasse fra hundeklassen.
Merk : Vi kan ikke erklære klasser eller grensesnitt protected
i Java.
Public Access Modifier
Når metoder, variabler, klasser og så videre blir erklært public
, kan vi få tilgang til dem hvor som helst. Den offentlige tilgangsmodifisereren har ingen omfangsbegrensning. For eksempel,
// Animal.java file // public class public class Animal ( // public variable public int legCount; // public method public void display() ( System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); ) ) // Main.java public class Main ( public static void main( String() args ) ( // accessing the public class Animal animal = new Animal(); // accessing the public variable animal.legCount = 4; // accessing the public method animal.display(); ) )
Utgang :
Jeg er et dyr. Jeg har 4 ben.
Her,
- Den offentlige klassen Animal er tilgjengelig fra hovedklassen.
- Den offentlige variabelen benCount er tilgjengelig fra hovedklassen.
- Den offentlige metoden
display()
er tilgjengelig fra hovedklassen.
Tilgangsmodifikatorer oppsummert i en figur

Tilgangsmodifikatorer brukes hovedsakelig til innkapsling. Jeg kan hjelpe oss med å kontrollere hvilken del av et program som får tilgang til medlemmene i en klasse. Slik at misbruk av data kan forhindres. Hvis du vil lære mer om innkapsling, kan du gå til Java Encapsulation.