I denne vejledning lærer vi om Java Access Modifier, dens typer og hvordan man bruger dem ved hjælp af eksempler.
Hvad er adgangsmodifikatorer?
I Java bruges adgangsmodifikatorer til at indstille tilgængeligheden (synlighed) for klasser, grænseflader, variabler, metoder, konstruktører, data-medlemmer og settermetoderne. For eksempel,
class Animal ( public void method1() (… ) private void method2() (… ) )
I ovenstående eksempel har vi deklareret to metoder: metode1 () og metode2 (). Her,
- metode1 er
public
- Dette betyder, at andre klasser kan få adgang til den. - method2 er
private
- Dette betyder, at andre klasser ikke kan få adgang til den.
Bemærk nøgleordet public
og private
. Disse er adgangsmodifikatorer i Java. De er også kendt som synlighedsmodifikatorer.
Bemærk : Du kan ikke indstille adgangsmodifikatoren for getters-metoder.
Typer af adgangsmodifikator
Før du lærer om typer af adgangsmodifikatorer, skal du sørge for at kende til Java-pakker.
Der er fire nøgleord til adgangsmodifikatorer i Java, og de er:
Modifikator | Beskrivelse |
Standard | erklæringer er kun synlige i pakken (privat pakke) |
Privat | erklæringer er kun synlige inden for klassen |
Beskyttet | erklæringer er synlige i pakken eller i alle underklasser |
Offentlig | erklæringer er synlige overalt |
Standardadgang modifikator
Hvis vi ikke udtrykkeligt angiver nogen adgangsmodifikator for klasser, metoder, variabler osv., Betragtes standardadgangsmodifikatoren som standard. For eksempel,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Her har Logger-klassen standardadgangsmodifikatoren. Og klassen er synlig for alle de klasser, der hører til standardpakken. Men hvis vi prøver at bruge Logger-klassen i en anden klasse uden for defaultPackage, får vi en kompileringsfejl.
Privat adgangsmodifikator
Når variabler og metoder erklæres private
, kan de ikke tilgås uden for 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 ovenstående eksempel har vi deklareret en privat variabel med navnet navn og en privat metode navngivet display()
. Når vi kører programmet, får vi følgende fejl:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
Fejlen genereres, fordi vi forsøger at få adgang til den private variabel og den private metode til dataklassen fra hovedklassen.
Du undrer dig måske over, hvad hvis vi har brug for adgang til disse private variabler. I dette tilfælde kan vi bruge 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()); ) )
Output :
Navnet er Programiz
I ovenstående eksempel har vi en privat variabel med navnet navn. For at få adgang til variablen fra den ydre klasse har vi brugt metoder: getName()
og setName()
. Disse metoder kaldes getter og setter i Java.
Her har vi brugt settermetoden ( setName()
) til at tildele variablen værdi og gettermetoden ( getName()
) for at få adgang til variablen.
Vi har brugt this
nøgleord inde i setName () for at henvise til variablen i klassen. Hvis du vil lære mere om dette nøgleord, skal du besøge Java dette nøgleord.
Bemærk : Vi kan ikke erklære klasser og grænseflader private i Java. Dog kan de indlejrede klasser erklæres private. Hvis du vil lære mere, skal du besøge Java Nested og Inner Class.
Beskyttet adgangsmodifikator
Når metoder og data-medlemmer erklæres protected
, kan vi få adgang til dem inden for den 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(); ) )
Output :
Jeg er et dyr
I eksemplet ovenfor har vi en beskyttet metode navngivet display()
inden for dyreklassen. Dyreklassen arves af hundeklassen. For at lære mere om arv, besøg Java Arv.
Derefter oprettede vi en objekthund fra hundeklassen. Ved hjælp af objektet forsøgte vi at få adgang til den beskyttede metode i moderklassen.
Da der er adgang til beskyttede metoder fra barneklasser, er vi i stand til at få adgang til metoden for dyreklasse fra hundeklassen.
Bemærk : Vi kan ikke erklære klasser eller grænseflader protected
i Java.
Modifikator for offentlig adgang
Når metoder, variabler, klasser osv. Erklæres public
, så kan vi få adgang til dem hvor som helst. Den offentlige adgangsmodifikator har ingen omfangsbegrænsning. 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(); ) )
Output :
Jeg er et dyr. Jeg har 4 ben.
Her,
- Den offentlige klasse Dyr tilgås fra hovedklassen.
- Den offentlige variable legCount fås fra hovedklassen.
- Den offentlige metode
display()
tilgås fra hovedklassen.
Adgangsmodifikatorer opsummeret i en figur

Adgangsmodifikatorer bruges hovedsageligt til indkapsling. Jeg kan hjælpe os med at kontrollere, hvilken del af et program der kan få adgang til medlemmerne af en klasse. Så misbrug af data kan forhindres. For at lære mere om indkapsling, besøg Java Encapsulation.