Modificateurs d’accès Java

Les modificateurs d’accès Java sont utilisés pour contrôler l’accès en Java. Java offre un contrôle d’accès à travers trois mots-clés – private, protected et public. Nous ne sommes pas toujours obligés d’utiliser ces modificateurs d’accès, donc nous en avons un autre appelé « accès par défaut », « accès de paquetage » ou « pas de modificateur ».

Modificateurs d’accès Java

Nous pouvons utiliser les modificateurs d’accès Java avec les classes ainsi qu’avec les variables et méthodes de classe. Nous sommes autorisés à n’utiliser que les modificateurs d’accès « public » ou « par défaut » avec les classes Java.

  1. Si une classe est « public », alors nous pouvons y accéder de n’importe où, c’est-à-dire depuis n’importe quelle autre classe située dans n’importe quel autre paquetage, etc.
  2. Nous ne pouvons avoir qu’une seule classe « public » dans un fichier source et le nom de fichier doit être le même que le nom de la classe publique.
  3. Si la classe a un « accès par défaut », alors elle ne peut être accédée que depuis d’autres classes dans le même paquetage.

Modificateurs d’accès Java avec les membres de classe

Nous pouvons avoir les quatre modificateurs d’accès pour les variables de membre de classe et les méthodes. Cependant, les règles de modificateur d’accès des membres sont appliquées après les règles d’accès au niveau de la classe. Par exemple, si une classe a un accès par défaut, elle ne sera pas visible dans d’autres paquets et donc les méthodes et les variables de la classe ne seront également pas visibles. Nous examinerons chacun d’entre eux séparément et ensuite nous montrerons l’utilisation des modificateurs d’accès Java avec un programme simple.

Modificateurs d’accès Java – mot-clé public

Si un membre de classe est «public», alors il peut être accédé de n’importe où. La variable de membre ou la méthode est accessible globalement. C’est la manière la plus simple de fournir l’accès aux membres de la classe. Cependant, nous devrions faire attention à l’utilisation de ce mot-clé avec les variables de classe sinon n’importe qui peut changer les valeurs. Habituellement, les variables de classe sont gardées privées et des méthodes de getter-setter sont fournies pour travailler avec elles.

Modificateurs d’accès Java – mot-clé privé

Si un membre de classe est « private », alors il ne sera accessible qu’à l’intérieur de la même classe. C’est l’accès le plus restreint et le membre de classe ne sera pas visible pour le monde extérieur. Habituellement, nous gardons les variables de classe en privé et les méthodes destinées à être utilisées uniquement à l’intérieur de la classe en privé.

Mots-clés d’accès Java – mot-clé protected

Si un membre de classe est « protected », alors il sera accessible uniquement aux classes dans le même package et aux sous-classes. Ce modificateur est moins restreint que private mais plus restreint que l’accès public. Habituellement, nous utilisons ce mot-clé pour nous assurer que les variables de classe sont accessibles uniquement aux sous-classes.

Mots-clés d’accès Java – accès par défaut

Si un membre de classe n’a pas de modificateur d’accès spécifié, il est traité avec un accès par défaut. Les règles d’accès sont similaires à celles des classes, et le membre de classe avec un accès par défaut sera accessible uniquement aux classes du même package. Cet accès est plus restreint que public et protégé, mais moins restreint que privé. (Moins accessible) private < default < protected < public (Plus accessible) Le tableau ci-dessous résume les modificateurs d’accès par rapport aux différentes classes dans le même package ou dans d’autres packages et sous-classes. Écrivons quelques classes simples où nous verrons les modificateurs d’accès Java en action. TestA.java

package com.journaldev.access;

class TestA {

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

Notez que la classe TestA a un accès par défaut et la méthode de classe privée est accessible à toutes les autres parties de la même classe. 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() {
	}

}

Notez que TestB est dans le même package que la classe TestA et peut donc accéder à ses membres de classe. Les membres privés ne sont pas accessibles, mais tous les autres membres le sont en raison du même 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();
	}

}

La classe TestB est accessible car elle est publique. Seuls les membres publics de la classe TestB sont accessibles car la classe TestC n’est pas dans le même package ni une sous-classe de 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

		// fonctionne, accès à la méthode protégée de la super classe en utilisant la sous-classe
		new TestE().methodProtected();

	}

}

Depuis que la classe TestE est une sous-classe de TestB, nous pouvons accéder aux membres protégés de TestB à travers la classe enfant TestE. Si nous essayons d’accéder directement à la méthode protégée de la superclasse, nous obtiendrons une erreur de compilation. C’est tout pour les modificateurs d’accès en java, c’est simple à comprendre. Il suffit de ne pas confondre avec l’accès par défaut et l’accès protégé. Un moyen facile de se rappeler est que l’accès par défaut est plus restreint que l’accès protégé et que les membres protégés sont accessibles dans les sous-classes. Récemment, j’ai réalisé une vidéo pour expliquer en détail les modificateurs d’accès en java, vous pouvez la regarder ci-dessous sur YouTube. https://www.youtube.com/watch?v=QKjnbC3UBtY

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