Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Apprendre Modificateur Private | Classes Avancées
Java Avancé

bookModificateur Private

Comment masquer des champs et des méthodes à une autre classe

Les modificateurs d'accès sont utilisés pour contrôler la visibilité et l'accessibilité des variables et des méthodes en Java. Ils permettent de définir la portée et de restreindre l'accès à certains membres d'une classe.

Nous avons déjà abordé les modificateurs d'accès dans la section précédente. Maintenant, examinons de plus près le modificateur d'accès le plus couramment utilisé : private.

Comme vous le savez, avec le modificateur d'accès private, il est uniquement possible d'accéder à un champ ou une méthode depuis la classe dans laquelle il se trouve. Observons un exemple d'utilisation du modificateur private :

Par exemple, si l'on ne souhaite pas qu'une variable d'une classe soit visible ou accessible depuis une autre classe, on peut utiliser le modificateur d'accès private :

Main.java

Main.java

copy
123456789101112131415
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.name = "Bob"; System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; }

Nous avons déclaré les champs de la classe Person comme private. Lorsque nous essayons d'initialiser directement le champ, une erreur se produit indiquant que le champ name possède un modificateur d'accès private et n'est pas accessible pour l'appel ou la modification dans la méthode main.

Comment initialiser un champ privé

La manière la plus simple de contourner cette protection est d'utiliser l'initialisation via un constructeur. Cependant, de cette façon, il est uniquement possible d'initialiser les champs des objets mais pas d'accéder à ces champs. Voyons un exemple :

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } }

Nous avons pu initialiser le champ name via le constructeur, mais nous ne pouvons toujours pas accéder à ce champ ni l'afficher avec System.out.println(). Pour contourner cette limitation, il est possible de surcharger la méthode toString() afin que, lors de l'appel de System.out.println(bob);, les informations concernant ses champs soient affichées. Examinons un exemple :

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }

Nous avons finalement réussi à afficher la valeur du champ name de l'objet bob. Nous avons accompli cela en utilisant la méthode toString() surchargée, dans laquelle nous avons implémenté la logique d'affichage du name.

La question se pose : pourquoi avons-nous besoin de ce modificateur d'accès si nous devons écrire autant de code supplémentaire ?

Parfois, dans différentes classes, il existe des variables portant le même nom, et dans de tels cas, il est nécessaire de masquer les variables de ces classes afin que les autres classes n'aient pas accès à des champs inutiles. Cela améliore considérablement la facilité d'écriture du code en général lorsque l'on comprend à quelle classe appartient chaque champ.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 3

Demandez à l'IA

expand

Demandez à l'IA

ChatGPT

Posez n'importe quelle question ou essayez l'une des questions suggérées pour commencer notre discussion

Awesome!

Completion rate improved to 2.63

bookModificateur Private

Glissez pour afficher le menu

Comment masquer des champs et des méthodes à une autre classe

Les modificateurs d'accès sont utilisés pour contrôler la visibilité et l'accessibilité des variables et des méthodes en Java. Ils permettent de définir la portée et de restreindre l'accès à certains membres d'une classe.

Nous avons déjà abordé les modificateurs d'accès dans la section précédente. Maintenant, examinons de plus près le modificateur d'accès le plus couramment utilisé : private.

Comme vous le savez, avec le modificateur d'accès private, il est uniquement possible d'accéder à un champ ou une méthode depuis la classe dans laquelle il se trouve. Observons un exemple d'utilisation du modificateur private :

Par exemple, si l'on ne souhaite pas qu'une variable d'une classe soit visible ou accessible depuis une autre classe, on peut utiliser le modificateur d'accès private :

Main.java

Main.java

copy
123456789101112131415
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.name = "Bob"; System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; }

Nous avons déclaré les champs de la classe Person comme private. Lorsque nous essayons d'initialiser directement le champ, une erreur se produit indiquant que le champ name possède un modificateur d'accès private et n'est pas accessible pour l'appel ou la modification dans la méthode main.

Comment initialiser un champ privé

La manière la plus simple de contourner cette protection est d'utiliser l'initialisation via un constructeur. Cependant, de cette façon, il est uniquement possible d'initialiser les champs des objets mais pas d'accéder à ces champs. Voyons un exemple :

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } }

Nous avons pu initialiser le champ name via le constructeur, mais nous ne pouvons toujours pas accéder à ce champ ni l'afficher avec System.out.println(). Pour contourner cette limitation, il est possible de surcharger la méthode toString() afin que, lors de l'appel de System.out.println(bob);, les informations concernant ses champs soient affichées. Examinons un exemple :

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }

Nous avons finalement réussi à afficher la valeur du champ name de l'objet bob. Nous avons accompli cela en utilisant la méthode toString() surchargée, dans laquelle nous avons implémenté la logique d'affichage du name.

La question se pose : pourquoi avons-nous besoin de ce modificateur d'accès si nous devons écrire autant de code supplémentaire ?

Parfois, dans différentes classes, il existe des variables portant le même nom, et dans de tels cas, il est nécessaire de masquer les variables de ces classes afin que les autres classes n'aient pas accès à des champs inutiles. Cela améliore considérablement la facilité d'écriture du code en général lorsque l'on comprend à quelle classe appartient chaque champ.

Tout était clair ?

Comment pouvons-nous l'améliorer ?

Merci pour vos commentaires !

Section 5. Chapitre 3
some-alt