access modifiers java tutorial with examples
Ce didacticiel vidéo explique ce que sont les modificateurs d'accès en Java et comment utiliser les modificateurs d'accès par défaut, public, protégé et privé à l'aide d'exemples:
En Java, nous avons des classes et des objets. Ces classes et objets sont contenus dans un package. De plus, les classes peuvent avoir des classes, des méthodes, des variables imbriquées, etc. Comme Java est un langage de programmation orienté objet, nous devons suivre l'encapsulation dans laquelle nous cachons les détails indésirables.
Java fournit des entités appelées «Modificateurs d'accès ou spécificateurs d'accès» qui nous aident à restreindre la portée ou la visibilité d'un package, d'une classe, d'un constructeur, de méthodes, de variables ou d'autres membres de données. Ces modificateurs d'accès sont également appelés «Spécificateurs de visibilité».
En utilisant les spécificateurs d'accès, une méthode ou une variable de classe particulière peut être restreinte à l'accès ou masquée des autres classes.
=> Consultez TOUS les didacticiels Java ici.
comment déclarer float en java
Ce que vous apprendrez:
- Tutoriel vidéo sur les modificateurs d'accès en Java
- Accéder aux modificateurs en Java
- Types de modificateurs d'accès en Java
- Conclusion
Tutoriel vidéo sur les modificateurs d'accès en Java
Accéder aux modificateurs en Java
Les spécificateurs d'accès déterminent également quels membres de données (méthodes ou champs) d'une classe peuvent être accédés par d'autres membres de données de classes ou de packages, etc. Pour assurer l'encapsulation et la réutilisation, ces spécificateurs / modificateurs d'accès font partie intégrante de la programmation orientée objet.
Les modificateurs en Java sont de deux types:
# 1) Modificateurs d'accès
Les modificateurs d'accès en Java nous permettent de définir la portée, l'accessibilité ou la visibilité d'un membre de données, qu'il s'agisse d'un champ, d'un constructeur, d'une classe ou d'une méthode.
# 2) Modificateurs sans accès
Java fournit également des spécificateurs de non-accès qui sont utilisés avec des classes, des variables, des méthodes, des constructeurs, etc. Les spécificateurs / modificateurs de non-accès définissent le comportement des entités vers la JVM.
Certains des spécificateurs / modificateurs de non-accès en Java sont:
- statique
- final
- abstrait
- transitoire
- volatil
- synchronisé
- originaire de
Nous avons couvert les mots-clés statiques, synchronisés et volatils dans nos didacticiels précédents. Nous aborderons les autres modificateurs sans accès dans nos futurs tutoriels car ils sortent du cadre de ce tutoriel.
Types de modificateurs d'accès en Java
Java fournit quatre types de spécificateurs d'accès que nous pouvons utiliser avec des classes et d'autres entités.
Ceux-ci sont:
# 1) Par défaut: Chaque fois qu’un niveau d’accès spécifique n’est pas spécifié, il est supposé être «par défaut». La portée du niveau par défaut se trouve dans le package.
# 2) Public: Il s'agit du niveau d'accès le plus courant et chaque fois que le spécificateur d'accès public est utilisé avec une entité, cette entité particulière est accessible depuis l'intérieur ou l'extérieur de la classe, à l'intérieur ou à l'extérieur du package, etc.
# 3) Protégé: Le niveau d'accès protégé a une étendue qui se trouve dans le package. Une entité protégée est également accessible en dehors du package via une classe héritée ou une classe enfant.
# 4) Privé: Lorsqu'une entité est privée, cette entité n'est pas accessible en dehors de la classe. Une entité privée ne peut être accessible qu'à partir de la classe.
Nous pouvons résumer les modificateurs d'accès dans le tableau suivant.
Spécificateur d'accès | À l'intérieur de la classe | Paquet intérieur | Sous-classe de package extérieur | Forfait extérieur |
---|---|---|---|---|
Privé | Oui | Ne pas | Ne pas | Ne pas |
Défaut | Oui | Oui | Ne pas | Ne pas |
Protégé | Oui | Oui | Oui | Ne pas |
Publique | Oui | Oui | Oui | Oui |
Ensuite, nous discuterons de chacun de ces spécificateurs d'accès en détail.
Spécificateurs d'accès par défaut
Un modificateur d'accès par défaut en Java n'a pas de mot clé spécifique. Chaque fois que le modificateur d'accès n'est pas spécifié, il est supposé être la valeur par défaut. Les entités telles que les classes, les méthodes et les variables peuvent avoir un accès par défaut.
Une classe par défaut est accessible à l'intérieur du package mais elle n'est pas accessible de l'extérieur du package, c'est-à-dire que toutes les classes à l'intérieur du package dans lesquelles la classe par défaut est définie peuvent accéder à cette classe.
De même, une méthode ou une variable par défaut est également accessible à l'intérieur du package dans lequel elles sont définies et non à l'extérieur du package.
Le programme ci-dessous illustre le modificateur d'accès par défaut en Java.
class BaseClass { void display() //no access modifier indicates default modifier { System.out.println('BaseClass::Display with 'dafault' scope'); } } class Main { public static void main(String args()) { //access class with default scope BaseClass obj = new BaseClass(); obj.display(); //access class method with default scope } }
Production:
Dans le programme ci-dessus, nous avons une classe et une méthode à l'intérieur sans aucun modificateur d'accès. Par conséquent, l'affichage de la classe et de la méthode a un accès par défaut. Ensuite, nous voyons que dans la méthode, nous pouvons directement créer un objet de la classe et appeler la méthode.
Modificateur d'accès public
Une classe ou une méthode ou un champ de données spécifié comme «public» est accessible à partir de n'importe quelle classe ou package du programme Java. L'entité publique est accessible dans le package ainsi qu'en dehors du package. En général, le modificateur d'accès public est un modificateur qui ne restreint pas du tout l'entité.
class A { public void display() { System.out.println('SoftwareTestingHelp!!'); } } class Main { public static void main(String args()) { A obj = new A (); obj.display(); } }
Production:
Spécificateur d'accès protégé
Le spécificateur d'accès protégé autorise l'accès aux entités via des sous-classes de la classe dans laquelle l'entité est déclarée. Peu importe que la classe se trouve dans le même package ou dans un package différent, mais tant que la classe qui tente d’accéder à une entité protégée est une sous-classe de cette classe, l’entité est accessible.
Notez qu'une classe et une interface ne peuvent pas être protégées, c'est-à-dire que nous ne pouvons pas appliquer de modificateurs protégés aux classes et aux interfaces.
Le modificateur d'accès protégé est généralement utilisé dans les relations parent-enfant.
Le programme ci-dessous illustre l'utilisation du modificateur d'accès protégé en Java.
//A->B->C = class hierarchy class A { protected void display() { System.out.println('SoftwareTestingHelp'); } } class B extends A {} class C extends B {} class Main{ public static void main(String args()) { B obj = new B(); //create object of class B obj.display(); //access class A protected method using obj C cObj = new C(); //create object of class C cObj.display (); //access class A protected method using cObj } }
Production:
Modificateur d'accès privé
Le modificateur d’accès «privé» est celui qui a le niveau d’accessibilité le plus bas. Les méthodes et champs déclarés privés ne sont pas accessibles en dehors de la classe. Ils ne sont accessibles qu'au sein de la classe qui a ces entités privées comme membres.
Notez que les entités privées ne sont même pas visibles pour les sous-classes de la classe. Un modificateur d'accès privé assure l'encapsulation en Java.
Quelques points à noter concernant le modificateur d'accès privé.
- Le modificateur d'accès privé ne peut pas être utilisé pour les classes et les interfaces.
- La portée des entités privées (méthodes et variables) est limitée à la classe dans laquelle elles sont déclarées.
- Une classe avec un constructeur privé ne peut pas créer un objet de la classe à partir d'un autre endroit comme la méthode main. (Plus de détails sur les constructeurs privés ont été expliqués dans notre tutoriel précédent).
Le programme Java ci-dessous utilise un modificateur d'accès privé.
class TestClass{ //private variable and method private int num=100; private void printMessage(){System.out.println('Hello java');} } public class Main{ public static void main(String args()){ TestClass obj=new TestClass(); System.out.println(obj.num);//try to access private data member - Compile Time Error obj.printMessage();//Accessing private method - Compile Time Error } }
Production:
Le programme ci-dessus donne une erreur de compilation car nous essayons d'accéder aux données privées membres en utilisant l'objet de classe.
Mais il existe une méthode pour accéder aux variables membres privées. Cette méthode utilise des getters et des setters en Java. Nous fournissons donc une méthode publique get dans la même classe dans laquelle la variable privée est déclarée afin que getter puisse lire la valeur de la variable privée.
De même, nous fournissons une méthode de définition publique qui nous permet de définir une valeur pour la variable privée.
Le programme Java suivant illustre l'utilisation des méthodes getter et setter pour les variables privées en Java.
comment ouvrir les fichiers json
class DataClass { private String strname; // getter method public String getName() { return this.strname; } // setter method public void setName(String name) { this.strname= name; } } public class Main { public static void main(String() main){ DataClass d = new DataClass(); // access the private variable using the getter and setter d.setName('Java Programming'); System.out.println(d.getName()); } }
Production:
Le programme ci-dessus a une classe avec une variable de chaîne privée. Nous fournissons une méthode de membre public getName qui renvoie la valeur de la variable privée. Nous fournissons également une méthode publique setName dans la classe qui prend un String comme argument et l'assigne à la variable privée.
Comme les deux méthodes sont publiques, nous pouvons facilement y accéder en utilisant l'objet de la classe. De cette façon, nous pouvons surmonter l'erreur de compilation qui apparaît chaque fois que nous essayons d'accéder aux données privées membres de la classe.
Questions fréquemment posées
Q # 1) Combien de modificateurs d'accès y a-t-il en Java?
Répondre: Java fournit quatre modificateurs, à savoir par défaut, public, protégé et privé.
Q # 2) Que sont les modificateurs d'accès et les modificateurs sans accès en Java?
Répondre: Les modificateurs d'accès définissent la visibilité ou la portée d'une entité de programme comme une classe ou une méthode ou une variable ou un constructeur. Les modificateurs de non-accès définissent le comportement d'une entité. Par exemple, une méthode ou un bloc synchronisé indique qu'il peut fonctionner dans un environnement multithreading, une dernière variable indique qu'il s'agit d'une constante.
Q # 3) Pourquoi les spécificateurs d'accès sont-ils importants?
Répondre: Les modificateurs spécifient quelle classe peut accéder à quelles autres classes ou méthodes ou variables. En utilisant des spécificateurs d'accès, nous pouvons limiter l'accès de diverses classes, méthodes, constructeurs et variables et également assurer l'encapsulation et la réutilisabilité des entités Java.
Q # 4) Quels modificateurs ne sont pas utilisés pour la classe?
Répondre: Les modificateurs Protected et Private ne sont pas utilisés pour une classe.
Q # 5) Que sont les modificateurs sans accès?
Répondre: Les modificateurs qui définissent le comportement d'entités telles que la classe, la méthode ou les variables auxquelles ils sont associés sont des modificateurs sans accès. Comme son nom l'indique, ils ne spécifient pas l'accès. Java fournit divers modificateurs sans accès tels que statique, final, synchronisé, volatile, abstrait, etc.
En savoir plus sur les modificateurs de visibilité
Java fournit de nombreux modificateurs pour accéder à la variable, aux méthodes et aux constructeurs.
Il existe 4 types de variables d'accès en Java:
- Privé
- Publique
- Défaut
- Protégé
# 1) Privé
Si une variable est déclarée privée, elle est alors accessible dans la classe. Cette variable ne sera pas disponible en dehors du cours. Ainsi, les membres extérieurs ne peuvent pas accéder aux membres privés.
Remarque: Les classes et les interfaces ne peuvent pas être privées.
# 2) Publique
Les méthodes / variables avec des modificateurs publics sont accessibles par toutes les autres classes du projet.
# 3) Protégé
Si une variable est déclarée comme protégée, elle est alors accessible dans les mêmes classes de package et sous-classe de tous les autres packages.
Remarque: Le modificateur d'accès protégé ne peut pas être utilisé pour la classe et les interfaces.
# 4) Modificateur d'accès par défaut
Si une variable / méthode est définie sans aucun mot clé de modificateur d'accès, cela aura un accès modificateur par défaut.
Modificateurs d'accès | Visibilité |
---|---|
Publique | Visible par toutes les classes. |
Protégé | Visible pour les classes avec dans le package et les sous-classes d'un autre package. |
Aucun modificateur d'accès (par défaut) | Visible pour les classes avec le package |
privé | Visible avec dans la classe. Il n'est pas accessible en dehors de la classe. |
Classe de démonstration:
class AccessModifiersDemo { private int empsalaray ; public String empName; private void calculateSalary() { System.out.println('insid methodone'); } public String printEmpName(String empName ) { this.empName=empName; return empName; } }
meilleur logiciel d'extraction de DVD pour mac
Accéder aux membres de la classe dans une autre classe:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); accessobj.calculateSalary(); } }
Production:
Accès aux membres publics:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); System.out.println(accessobj.printEmpName('Bobby')); } }
Production:
Policier
Les points importants:
- Les spécificateurs d'accès définissent la visibilité de la classe.
- Si aucun mot clé n'est mentionné, c'est le modificateur d'accès par défaut.
- Quatre modificateurs en Java incluent public, privé, protégé et par défaut.
- Les mots-clés privés et protégés ne peuvent pas être utilisés pour les classes et les interfaces.
Conclusion
Dans ce didacticiel, nous avons exploré en détail les modificateurs d'accès en Java. Java fournit quatre types de modificateurs d'accès ou de spécificateurs de visibilité, à savoir par défaut, public, privé et protégé. Le modificateur par défaut n'est associé à aucun mot-clé.
Lorsqu'une classe, une méthode ou une variable n'a pas de spécificateur d'accès associé, nous supposons qu'elle dispose d'un accès par défaut. Le modificateur d'accès public permet d'accéder à tout, que ce soit à l'intérieur ou à l'extérieur de la classe ou du package. Il n'y a pas de limite d'accès dans le cas du modificateur public.
Le spécificateur de visibilité protégée autorise l'accès uniquement aux sous-classes héritant de la classe dans laquelle les membres protégés sont déclarés. Le modificateur d'accès privé permet à la moindre accessibilité avec les membres de données privées d'être accessibles uniquement dans la classe.
Les modificateurs limitent la portée des membres de données tels que les classes, les constructeurs, les méthodes et les variables et définissent la limite des classes ou packages qui peuvent y accéder. Les spécificateurs d'accès encouragent l'encapsulation et la réutilisabilité en Java. Notez que les classes et l'interface ne peuvent pas être protégées ou privées.
=> Visitez ici pour apprendre Java à partir de zéro.
lecture recommandée
- Tutoriel de réflexion Java avec des exemples
- Tutoriel JAVA pour les débutants: plus de 100 tutoriels vidéo Java pratiques
- Introduction au langage de programmation Java - Tutoriel vidéo
- Tutoriel Java SWING: Conteneur, composants et gestion des événements
- Tutoriel Java String with String Buffer et String Builder
- Déploiement Java: création et exécution d'un fichier JAR Java
- Machine virtuelle Java: comment JVM aide à exécuter une application Java
- Tutoriel Java Collections Framework (JCF)