In deze zelfstudie leren we met behulp van voorbeelden meer over de Java Access Modifier, de typen en hoe u deze kunt gebruiken.
Wat zijn toegangsmodificatoren?
In Java worden toegangsmodificatoren gebruikt om de toegankelijkheid (zichtbaarheid) van klassen, interfaces, variabelen, methoden, constructors, gegevensleden en de setter-methoden in te stellen. Bijvoorbeeld,
class Animal ( public void method1() (… ) private void method2() (… ) )
In het bovenstaande voorbeeld hebben we 2 methoden gedeclareerd: method1 () en method2 (). Hier,
- method1 is
public
- Dit betekent dat het toegankelijk is voor andere klassen. - method2 is
private
- Dit betekent dat het niet toegankelijk is voor andere klassen.
Let op het trefwoord public
en private
. Dit zijn toegangsmodificatoren in Java. Ze worden ook wel zichtbaarheidsmodificatoren genoemd.
Opmerking : u kunt de toegangsmodificator van getters-methoden niet instellen.
Typen toegangsmodificator
Voordat u leert over soorten toegangsmodificatoren, moet u kennis hebben van Java-pakketten.
Er zijn vier sleutelwoorden voor toegangsmodificatoren in Java en dit zijn:
Modificator | Omschrijving |
Standaard | declaraties zijn alleen zichtbaar binnen het pakket (pakket privé) |
Privaat | declaraties zijn alleen zichtbaar binnen de klasse |
Beschermd | declaraties zijn zichtbaar binnen het pakket of alle subklassen |
Openbaar | verklaringen zijn overal zichtbaar |
Standaard toegangsmodificator
Als we niet expliciet een toegangsmodificator specificeren voor klassen, methoden, variabelen, enz., Dan wordt standaard de standaard toegangsmodificator beschouwd. Bijvoorbeeld,
package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )
Hier heeft de Logger-klasse de standaard toegangsmodificator. En de klasse is zichtbaar voor alle klassen die bij het defaultPackage-pakket horen. Als we echter proberen om de Logger-klasse in een andere klasse buiten defaultPackage te gebruiken, krijgen we een compilatiefout.
Private Access Modifier
Wanneer variabelen en methoden worden gedeclareerd private
, zijn ze niet toegankelijk buiten de klasse. Bijvoorbeeld,
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"; ) )
In het bovenstaande voorbeeld hebben we een privévariabele met de naam name verklaard en een privémethode met de naam display()
. Wanneer we het programma uitvoeren, krijgen we de volgende foutmelding:
Main.java:18: error: name has private access in Data d.name = "Programiz"; ^
De fout wordt gegenereerd omdat we proberen toegang te krijgen tot de private variabele en de private-methode van de Data-klasse vanuit de Main-klasse.
U vraagt zich misschien af wat als we toegang moeten hebben tot die privévariabelen. In dit geval kunnen we de getters en setters-methode gebruiken. Bijvoorbeeld,
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()); ) )
Uitgang :
De naam is Programiz
In het bovenstaande voorbeeld hebben we een privévariabele met de naam naam. Om toegang te krijgen tot de variabele vanuit de buitenste klasse, hebben we methoden gebruikt: getName()
en setName()
. Deze methoden worden in Java getter en setter genoemd.
Hier hebben we de setter-methode ( setName()
) gebruikt om waarde toe te wijzen aan de variabele en de getter-methode ( getName()
) om toegang te krijgen tot de variabele.
We hebben this
trefwoord in de setName () gebruikt om naar de variabele van de klasse te verwijzen. Ga voor meer informatie over dit trefwoord naar Java dit trefwoord.
Opmerking : we kunnen geen klassen en interfaces privé declareren in Java. De geneste klassen kunnen echter privé worden verklaard. Bezoek Java Nested and Inner Class voor meer informatie.
Beschermde toegangsmodificator
Wanneer methoden en gegevensleden worden gedeclareerd protected
, hebben we toegang tot deze binnen hetzelfde pakket en ook vanuit subklassen. Bijvoorbeeld,
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(); ) )
Uitgang :
Ik ben een dier
In het bovenstaande voorbeeld hebben we een beschermde methode met de naam display()
in de klasse Animal. De klasse Animal wordt geërfd door de klasse Dog. Bezoek Java Inheritance voor meer informatie over overerving.
We hebben toen een objecthond gemaakt van de hondenklasse. Met behulp van het object hebben we geprobeerd toegang te krijgen tot de beschermde methode van de bovenliggende klasse.
Omdat beschermde methoden toegankelijk zijn vanuit de onderliggende klassen, hebben we toegang tot de methode van de klasse Dier vanuit de klasse Hond.
Opmerking : we kunnen geen klassen of interfaces protected
in Java declareren .
Modificator voor openbare toegang
Als methoden, variabelen, klassen enzovoort worden gedeclareerd public
, hebben we er overal toegang toe. De modifier voor openbare toegang heeft geen beperking in het bereik. Bijvoorbeeld,
// 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(); ) )
Uitgang :
Ik ben een dier. Ik heb 4 benen.
Hier,
- De openbare klasse Dier is toegankelijk vanuit de hoofdklasse.
- De openbare variabele legCount is toegankelijk vanuit de klasse Main.
- De openbare methode
display()
is toegankelijk vanuit de klasse Main.
Access Modifiers Samengevat in één figuur

Toegangsmodificatoren worden voornamelijk gebruikt voor inkapseling. Ik kan ons helpen te bepalen welk deel van een programma toegang heeft tot de leden van een klas. Zodat misbruik van gegevens kan worden voorkomen. Ga naar Java Encapsulation voor meer informatie over inkapseling.