- Modificateur d'accès privé
- Rôle du constructeur privé
- Modificateur d'accès par défaut
- Modificateur d'accès protégé
- Modificateur d'accès public
- 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 :
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ès | en classe | dans le colis | paquet extérieur par sous-classe uniquement | colis extérieur |
---|---|---|---|---|
Privé | ET | N | N | N |
Défaut | ET | ET | N | N |
Protégé | ET | ET | ET | N |
Publique | ET | ET | ET | ET |
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.