Contenu du cours
Java Étendu
Java Étendu
Accesseur et Mutateur
La meilleure façon de contourner le modificateur d'accès privé
Tous les programmeurs Java utilisent des constructions appelées getters et setters.
Les getters et setters sont des méthodes qui suivent un modèle spécifique. Ils sont utilisés pour contourner le modificateur d'accès private
et manipuler efficacement les champs d'une autre classe.
Que font les getters et setters ?
En termes simples, le setter nous permet d'assigner une valeur à un champ spécifique protégé par le modificateur d'accès privé, tandis que le getter nous permet de récupérer la valeur d'un champ protégé par le modificateur d'accès privé.
La syntaxe pour un getter et un setter :
Main
// getter public fieldType getFieldName() { return field; } // setter public void setFieldName(fieldType field) { this.field = field; }
Comme vous pouvez le voir dans le code ci-dessus, nous utilisons la convention de nommage pour les méthodes getFieldName()
et setFieldName()
. Par conséquent, si nous avons un champ private String name
et que nous créons un getter et un setter avec les noms getName()
et setName()
, respectivement. Il est également important de noter que le getter renvoie une valeur de même type que le champ name
, tandis que le setter prend un paramètre de même type que le champ name
.
Cela nous permet d'accéder aux champs qui sont protégés par le modificateur d'accès private
.
Jetons un coup d'œil à un exemple d'accès à un champ privé de la classe Person
dans la classe main
:
Main
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); System.out.println(bob.getName()); } } class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
Comme vous pouvez le voir, nous utilisons le setter pour définir une valeur pour le champ name
, puis nous utilisons le getter pour afficher la valeur du champ name
à l'écran. Faites attention à la syntaxe du getter et du setter, ainsi qu'au fait que le champ name
dans la classe Person
est protégé par le modificateur d'accès private
.
Constructeur vs Getter/Setter
Quel est le meilleur à utiliser, l'initialisation via un constructeur + la surcharge de la méthode toString()
, ou l'utilisation des getters et setters?
Il est définitivement préférable d'utiliser les getters et setters pour accéder aux champs protégés par le modificateur d'accès private
. Cela offre une plus grande flexibilité dans le code et améliore sa lisibilité. Lorsque vous voyez l'utilisation de la méthode getName()
dans le code, vous comprenez immédiatement que cette méthode récupère le champ nommé name
. Il en va de même lorsque vous voyez l'utilisation de la méthode setName()
, vous comprenez immédiatement que vous assignez une valeur spécifique au champ pour l'objet de la classe dans laquelle il est utilisé. Si d'autres personnes lisent votre code, elles seront heureuses de voir des getters et setters.
Il est également à noter que chaque champ nécessite son propre getter et setter. Si une classe a deux champs protégés par le modificateur d'accès private
, la classe devrait avoir un getter pour chaque champ, c'est-à-dire deux getters et deux setters.
Prenons un exemple où nous ajoutons un champ age
à la classe Person
:
Main
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.setName("Bob"); bob.setAge(27); System.out.println("Person's name: " + bob.getName() + ", Person's age: " + bob.getAge()); } } class Person { private String name; private int age; public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Comme vous pouvez le voir, nous avons créé un getter et un setter pour chaque champ de la classe Person
. Dans la méthode main
, nous avons initialisé les champs en utilisant le setter et affiché leurs valeurs à l'écran en utilisant le getter. Utiliser ces méthodes est très pratique, et vous les utiliserez fréquemment à l'avenir.
1. Quel est le but d'utiliser des getters et des setters ?
2. Quelle est la syntaxe d'une méthode getter en Java ?
3. Quelle est la syntaxe d'une méthode setter en Java ?
Merci pour vos commentaires !