logo

Modificateurs d'accès en Java

  1. Modificateur d'accès privé
  2. Rôle du constructeur privé
  3. Modificateur d'accès par défaut
  4. Modificateur d'accès protégé
  5. Modificateur d'accès public
  6. Modificateur d'accès avec remplacement de méthode

Il existe deux types de modificateurs en Java : modificateurs d'accès et modificateurs de non-accès .

Les modificateurs d'accès en Java spécifient l'accessibilité ou la portée d'un champ, d'une méthode, d'un constructeur ou d'une classe. Nous pouvons modifier le niveau d'accès des champs, des constructeurs, des méthodes et de la classe en y appliquant le modificateur d'accès.

Il existe quatre types de modificateurs d'accès Java :

    Privé: Le niveau d'accès d'un modificateur privé est uniquement au sein de la classe. Il n’est pas accessible depuis l’extérieur de la classe.Défaut: Le niveau d'accès d'un modificateur par défaut se trouve uniquement dans le package. Il n’est pas accessible depuis l’extérieur du package. Si vous ne spécifiez aucun niveau d'accès, ce sera le niveau par défaut.Protégé: Le niveau d'accès d'un modificateur protégé se situe à l'intérieur du package et à l'extérieur du package via la classe enfant. Si vous ne créez pas la classe enfant, elle n’est pas accessible depuis l’extérieur du package.Publique: Le niveau d'accès d'un modificateur public est partout. Il est accessible depuis l'intérieur de la classe, en dehors de la classe, dans le package et en dehors du package.

Il existe de nombreux modificateurs sans accès, tels que statique, abstrait, synchronisé, natif, volatile, transitoire, etc. Ici, nous allons apprendre uniquement les modificateurs d'accès.


Comprendre les modificateurs d'accès Java

Comprenons les modificateurs d'accès en Java par un simple tableau.

Modificateur d'accèsen classedans le colispaquet extérieur par sous-classe uniquementcolis extérieur
Privé ETNNN
Défaut ETETNN
Protégé ETETETN
Publique ETETETET

1) Privé

Le modificateur d'accès privé n'est accessible qu'au sein de la classe.

essayez le bloc catch en java

Exemple simple de modificateur d'accès privé

Dans cet exemple, nous avons créé deux classes A et Simple. Une classe contient des données membres privées et une méthode privée. Nous accédons à ces membres privés depuis l’extérieur de la classe, il y a donc une erreur de compilation.

 class A{ private int data=40; private void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//Compile Time Error obj.msg();//Compile Time Error } } 

Rôle du constructeur privé

Si vous rendez un constructeur de classe privé, vous ne pouvez pas créer l'instance de cette classe depuis l'extérieur de la classe. Par exemple:

 class A{ private A(){}//private constructor void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A();//Compile Time Error } } 

Remarque : Une classe ne peut pas être privée ou protégée, sauf la classe imbriquée.


2) Par défaut

Si vous n'utilisez aucun modificateur, il est traité comme défaut par défaut. Le modificateur par défaut est accessible uniquement dans le package. Il n’est pas accessible depuis l’extérieur du package. Il offre plus d'accessibilité que le privé. Mais c’est plus restrictif que protégé et public.

architecture de la ruche

Exemple de modificateur d'accès par défaut

Dans cet exemple, nous avons créé deux packages pack et mypack. Nous accédons à la classe A depuis l’extérieur de son package, car la classe A n’est pas publique et n’est donc pas accessible depuis l’extérieur du package.

 //save by A.java package pack; class A{ void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A();//Compile Time Error obj.msg();//Compile Time Error } } 

Dans l'exemple ci-dessus, la portée de la classe A et de sa méthode msg() est par défaut et n'est donc pas accessible depuis l'extérieur du package.


3) Protégé

Le modificateur d'accès protégé est accessible à l'intérieur et à l'extérieur du package, mais uniquement par héritage.

Le modificateur d'accès protégé peut être appliqué sur le membre de données, la méthode et le constructeur. Cela ne peut pas être appliqué à la classe.

programmation dynamique

Il offre plus d'accessibilité que le modificateur par défaut.

Exemple de modificateur d'accès protégé

Dans cet exemple, nous avons créé les deux packages pack et mypack. La classe A du package pack est publique et est donc accessible depuis l’extérieur du package. Mais la méthode msg de ce package est déclarée comme protégée, elle est donc accessible depuis l'extérieur de la classe uniquement par héritage.

 //save by A.java package pack; public class A{ protected void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B extends A{ public static void main(String args[]){ B obj = new B(); obj.msg(); } } 
 Output:Hello 

4) Publique

Le modificateur d'accès public est accessible partout. Il a la portée la plus large parmi tous les autres modificateurs.

Exemple de modificateur d'accès public

 //save by A.java package pack; public class A{ public void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } } 
 Output:Hello 

Modificateurs d'accès Java avec remplacement de méthode

Si vous remplacez une méthode, la méthode remplacée (c'est-à-dire déclarée dans la sous-classe) ne doit pas être plus restrictive.

 class A{ protected void msg(){System.out.println('Hello java');} } public class Simple extends A{ void msg(){System.out.println('Hello java');}//C.T.Error public static void main(String args[]){ Simple obj=new Simple(); obj.msg(); } } 

Le modificateur par défaut est plus restrictif que protégé. C'est pourquoi il y a une erreur de compilation.