Java Toegangsmethoden

Java-toegangsmodificatoren worden gebruikt om toegangscontrole in Java te bieden. Java biedt toegangscontrole via drie trefwoorden – private, protected en public. We zijn niet verplicht om deze toegangsmodificatoren altijd te gebruiken, dus we hebben er nog een, namelijk ” standaardtoegang “,” package-private “of” geen modificator “.

Java-toegangsmodificatoren

We kunnen Java-toegangsmodificatoren gebruiken met klassen, evenals klassenvariabelen en -methoden. We mogen alleen “public” of “default” toegangsmodificatoren gebruiken bij Java-klassen.

  1. Als een klasse “public” is, kunnen we er vanaf elke locatie toegang toe krijgen, dat wil zeggen vanaf elke andere klasse die zich in andere pakketten bevindt, enzovoort.
  2. We kunnen slechts één “public” klasse in een bronbestand hebben en de bestandsnaam moet dezelfde zijn als de naam van de openbare klasse.
  3. Als de klasse “standaardtoegang” heeft, kan deze alleen worden benaderd vanuit andere klassen in dezelfde package.

Java-toegangsmodificatoren met klasselid

We kunnen alle vier toegangsmogelijkheden hebben voor klasse-lidvariabelen en -methoden. De regels voor toegang tot leden worden echter toegepast na de toegangsregels op klasseniveau. Bijvoorbeeld, als een klasse standaardtoegang heeft, zal deze niet zichtbaar zijn in andere pakketten en zijn daarom de methoden en variabelen van de klasse ook niet zichtbaar. We zullen elk van hen afzonderlijk bekijken en vervolgens de toepassing van de toegangsmogelijkheden in Java laten zien aan de hand van een eenvoudig programma.

Java Toegangsmogelijkheden – openbaar trefwoord

Als een lid van een klasse “openbaar” is, kan het overal worden benaderd. De lidvariabele of methode is wereldwijd toegankelijk. Dit is de eenvoudigste manier om toegang te bieden tot klasseleden. We moeten echter voorzichtig zijn bij het gebruik van dit trefwoord met klassevariabelen, anders kan iedereen de waarden wijzigen. Meestal worden klassevariabelen privé gehouden en worden getter-setter-methoden geleverd om ermee te werken.

Java Toegangsmogelijkheden – privé trefwoord

Als een klasse-lid “private” is, is het alleen toegankelijk binnen dezelfde klasse. Dit is de meest beperkte toegang en het klasse-lid zal niet zichtbaar zijn voor de buitenwereld. Meestal houden we klasse-variabelen privé en methoden die alleen binnen de klasse moeten worden gebruikt als privé.

Java-toegangsmodificatoren – beschermd sleutelwoord

Als een klasse-lid “beschermd” is, is het alleen toegankelijk voor de klassen in hetzelfde pakket en voor de subklassen. Deze modifier is minder beperkt dan privé maar beperkter dan openbare toegang. Meestal gebruiken we dit trefwoord om ervoor te zorgen dat de klassevariabelen alleen toegankelijk zijn voor de subklassen.

Java-toegangsmodificatoren – standaardtoegang

Als een klasselid geen toegangsmodifier heeft gespecificeerd, wordt het behandeld met de standaardtoegang. De toegangsregels zijn vergelijkbaar met klassen en het klasselid met standaardtoegang is alleen toegankelijk voor klassen in dezelfde package. Deze toegang is beperkter dan public en protected, maar minder beperkt dan private. (Minst toegankelijk) private < default < protected < public (Meest toegankelijk) De onderstaande tabel vat bovenstaande toegangsmodificatoren samen met betrekking tot verschillende klassen in dezelfde package of andere packages en subklassen. Laten we wat eenvoudige klassen schrijven waar we de Java-toegangsmodificatoren in actie zullen zien. TestA.java

package com.journaldev.access;

class TestA {

	public void methodPublic(){
		methodPrivate();
	}
	
	protected void methodProtected(){
		methodPrivate();
	}
	
	void methodDefault(){
		methodPrivate();
	}
	
	private void methodPrivate(){}
}

Merk op dat de klasse TestA standaardtoegang heeft en de private methode van de klasse toegankelijk is voor alle andere delen van dezelfde klasse. TestB.java


package com.journaldev.access;

import com.journaldev.access.TestA;

public class TestB {

	public static void main(String args[]) {
		new TestA().methodPublic();
		new TestA().methodProtected();
		new TestA().methodDefault();

	}

	public void methodPublic() {

	}

	protected void methodProtected() {

	}

	void methodDefault() {

	}

	private void methodPrivate() {
	}

}

Merk op dat TestB zich in dezelfde package bevindt als de klasse TestA en daarom in staat is toegang te krijgen tot de leden van die klasse. Private leden zijn niet toegankelijk, maar alle andere leden zijn toegankelijk vanwege dezelfde package. TestC.java


package com.journaldev.access.child;

import com.journaldev.access.TestB;

public class TestC {

	public static void main(String[] args) {
		new TestB().methodPublic();
	}

}

TestB-klasse is toegankelijk omdat deze public is. Alleen de openbare leden van de TestB-klasse zijn toegankelijk omdat de TestC-klasse zich niet in dezelfde package bevindt, noch een subklasse is van TestB. TestE.java


package com.journaldev.util;

import com.journaldev.access.TestB;

public class TestE extends TestB {

	public static void main(String[] args) {
		new TestB().methodPublic();
		new TestB().methodProtected(); // compile time error

		// werkt, toegang tot superklasse beschermd methode met behulp van subklasse
		new TestE().methodProtected();

	}

}

Sinds TestE-klasse een subklasse is van TestB, kunnen we via de subklasse TestE toegang krijgen tot de beschermde leden van TestB. Als we proberen rechtstreeks toegang te krijgen tot de methode met beschermde toegang van de superklasse, krijgen we een compileerfout. Dat is alles wat betreft de toegangsmodificatoren in Java, het is eenvoudig te begrijpen. Verwar het gewoon niet met de standaard- en beschermde toegang. Een eenvoudige manier om het te onthouden is dat standaardtoegang beperkter is dan beschermde toegang en dat beschermde leden toegankelijk zijn in subklassen. Onlangs heb ik een video gemaakt waarin ik de toegangsmodificatoren in Java gedetailleerd uitleg, je kunt het hieronder op YouTube bekijken. https://www.youtube.com/watch?v=QKjnbC3UBtY

Source:
https://www.digitalocean.com/community/tutorials/java-access-modifiers