- 1 1. Introduction
- 2 3. Principaux cas d’utilisation de this
- 3 4. Notes importantes lors de l’utilisation de this
- 4 5. Exemples de code pratiques
- 4.1 5.1 Distinction entre variables membres et locales
- 4.2 5.2 Chaînage de constructeurs
- 4.3 5.3 Chaînage de méthodes
- 4.4 5.4 Passage de l’instance actuelle
- 4.5 6. Questions fréquemment posées (FAQ)
- 4.6 Q1. Dois‑je écrire « this » tout le temps ?
- 4.7 Q2. Que se passe‑t‑il si j’utilise this à l’intérieur d’une méthode statique ?
- 4.8 Q3. Quelle est la différence entre this et super ?
- 4.9 Q4. Quel est l’avantage de retourner this dans le chaînage de méthodes ?
- 4.10 Q5. Que se passe-t-il si j’oublie d’utiliser this quand c’est nécessaire ?
- 4.11 7. Conclusion
1. Introduction
Lorsque vous commencez à apprendre la programmation en Java, vous rencontrerez divers mots‑clés. Parmi eux, « this » joue un rôle très important pour comprendre les classes et les concepts orientés objet. Cependant, comme le mot « this » signifie simplement « cela/ceci » en anglais, de nombreux débutants trouvent d’abord difficile de comprendre pourquoi il est utilisé en programmation.
Cet article explique le rôle et l’utilisation du mot‑clé « this » en Java de manière claire et adaptée aux débutants. Vous apprendrez des points clés tels que la distinction entre les variables d’instance et les variables locales et l’utilisation de « this » dans les constructeurs, accompagnés d’exemples de code concrets.
Nous aborderons également les questions fréquentes, les erreurs courantes et les notes importantes. À la fin de ce guide, vous comprendrez comment fonctionne le mot‑clé this et comment l’utiliser en toute confiance, du scénario basique aux cas plus avancés.
2. Qu’est‑ce que le mot‑clé « this » ?
En Java, « this » désigne l’objet courant lui‑même. Lorsqu’une instance (objet) est créée à partir d’une classe, le mot‑clé « this » sert à faire référence à cet objet précis.
Même si plusieurs objets sont créés à partir de la même classe, le this de chaque objet fait référence à une instance différente. Cela permet de clarifier « quel objet est actuellement manipulé » dans votre code.
Les rôles de base de this
- Accéder aux variables et méthodes d’instance : utiliser
this.nomVariableouthis.nomMethode()vous permet d’accéder aux variables et méthodes de l’objet spécifique. - Faire la distinction entre variables locales et variables d’instance : lorsque les paramètres d’un constructeur ou d’une méthode portent le même nom que les variables d’instance, « this » sert à les différencier.
Pourquoi a‑t‑on besoin de « this » ?
En Java, vous pouvez créer plusieurs objets à partir d’une même classe, chacun avec son propre état et son propre comportement. À l’intérieur de ces objets, il faut un moyen de faire référence à « cet objet même ».
C’est exactement ce que fait le mot‑clé « this ».
Par exemple, dans une classe Person, l’utilisation de « this » permet d’exprimer « cet objet Person particulier ».
Résumé
« this » est un concept très important en programmation orientée objet. Il agit comme un pont qui permet à un objet d’accéder à ses propres données et à son propre comportement.
3. Principaux cas d’utilisation de this
Le mot‑clé « this » apparaît à de nombreux endroits en Java. Voici quelques exemples représentatifs avec des extraits de code.
3.1 Faire la distinction entre les variables d’instance et les variables locales
En Java, il est fréquent d’utiliser le même nom pour les paramètres d’un constructeur et pour les variables d’instance. Dans ces cas, « this » les différencie.
Exemple : Faire la distinction entre les variables d’instance et les variables locales
public class Student {
private String name;
public Student(String name) {
this.name = name; // Left: member variable, Right: constructor parameter
}
}
Si vous omettez this, la variable locale a la priorité et la variable d’instance ne sera pas correctement assignée.
3.2 Utiliser this dans les constructeurs
Java autorise plusieurs constructeurs grâce à la surcharge de constructeurs. Vous pouvez appeler un autre constructeur avec this() afin de réduire la duplication de code.
Exemple : Appeler un autre constructeur avec this()
public class Book {
private String title;
private int price;
public Book(String title) {
this(title, 0); // calls another constructor
}
public Book(String title, int price) {
this.title = title;
this.price = price;
}
}
Cela permet de centraliser la logique d’initialisation et d’éviter le code dupliqué.
3.3 Chaînage de méthodes
Retourner this rend possible l’appel de méthodes consécutives sur la même instance.
Exemple : Chaînage de méthodes
public class Person {
private String name;
private int age;
public Person setName(String name) {
this.name = name;
return this;
}
public Person setAge(int age) {
this.age = age;
return this;
}
}
// Method chaining
Person p = new Person().setName("佐藤").setAge(25);
Cette technique est largement utilisée dans les patterns de type builder et les classes de configuration.
3.4 Passage de l’instance actuelle
Vous pouvez utiliser « this » lorsque vous devez passer l’instance actuelle à une autre méthode ou classe.
Exemple : Passage de l’objet actuel
public class Printer {
public void print(Person person) {
System.out.println(person);
}
}
public class Person {
public void show(Printer printer) {
printer.print(this); // passes this instance
}
}
4. Notes importantes lors de l’utilisation de this
Bien que très utile, « this » doit être utilisé avec précaution pour éviter les erreurs.
4.1 this ne peut pas être utilisé dans des contextes statiques
Une méthode ou variable static appartient à la classe elle‑même — pas à une instance — donc « this » ne peut pas être utilisé.
Exemple invalide
public class Example {
private int value;
public static void printValue() {
// System.out.println(this.value); // Compile error
}
}
4.2 L’abus de this peut réduire la lisibilité
Utiliser « this » inutilement peut rendre le code plus difficile à lire. Utilisez‑le uniquement lorsque c’est nécessaire.
Exemple d’utilisation inutile
public class Test {
private int x;
public void setX(int x) {
this.x = x; // needed
// this.x = this.x + 1; // excessive use
}
}
4.3 Ne confondez pas this avec super
- this → l’instance actuelle
- super → le parent (superclasse)
Exemple : Utilisation de this vs super
public class Parent {
public void greet() {
System.out.println("Parent method");
}
}
public class Child extends Parent {
public void greet() {
System.out.println("Child method");
super.greet();
}
}
5. Exemples de code pratiques
5.1 Distinction entre variables membres et locales
public class Account {
private String owner;
public Account(String owner) {
this.owner = owner;
}
public void printOwner() {
System.out.println("Account Owner: " + this.owner);
}
}

5.2 Chaînage de constructeurs
public class Rectangle {
private int width;
private int height;
public Rectangle(int width) {
this(width, 1);
}
public Rectangle(int width, int height) {
this.width = width;
this.height = height;
}
public void printSize() {
System.out.println("Size: " + width + " x " + height);
}
}
5.3 Chaînage de méthodes
public class BuilderExample {
private String name;
private int age;
public BuilderExample setName(String name) {
this.name = name;
return this;
}
public BuilderExample setAge(int age) {
this.age = age;
return this;
}
public void printInfo() {
System.out.println("Name: " + name + ", Age: " + age);
}
}
BuilderExample person = new BuilderExample().setName("山田").setAge(30);
person.printInfo();
5.4 Passage de l’instance actuelle
public class Notifier {
public void notifyUser(User user) {
System.out.println(user.getName() + " has been notified.");
}
}
public class User {
private String name;
public User(String name) { this.name = name; }
public String getName() { return this.name; }
public void sendNotification(Notifier notifier) {
notifier.notifyUser(this);
}
}
Notifier notifier = new Notifier();
User user = new User("佐藤");
user.sendNotification(notifier);
6. Questions fréquemment posées (FAQ)
Q1. Dois‑je écrire « this » tout le temps ?
R.
Pas toujours. Utilisez‑le quand :
- les noms des variables locales et membres se chevauchent
- vous souhaitez référencer explicitement l’instance actuelle
Q2. Que se passe‑t‑il si j’utilise this à l’intérieur d’une méthode statique ?
R.
Vous obtiendrez une erreur de compilation. Les méthodes statiques appartiennent à la classe, pas à une instance.
Q3. Quelle est la différence entre this et super ?
- this : l’instance actuelle
- super : la classe parente
Q4. Quel est l’avantage de retourner this dans le chaînage de méthodes ?
Il permet des appels consécutifs sur la même instance, améliorant la lisibilité.
Q5. Que se passe-t-il si j’oublie d’utiliser this quand c’est nécessaire ?
Les variables locales peuvent masquer les variables d’instance, entraînant des affectations incorrectes et des bugs.
7. Conclusion
Cet article a expliqué le mot‑clé Java “this” des bases à l’utilisation pratique. Vous avez appris :
- Comment distinguer les variables d’instance des variables locales
- Comment centraliser la logique du constructeur
- Comment créer des chaînes de méthodes
- Comment passer l’instance courante à d’autres méthodes
Nous avons également abordé des notes importantes telles que :
- “this” ne peut pas être utilisé dans des contextes statiques
- Ne pas abuser de “this”
- L’utiliser correctement avec “super”
Comprendre le fonctionnement de “this” rendra la conception de vos classes Java plus claire et réduira les bugs. Continuez à explorer les fondamentaux de Java et appliquez ces concepts dans du code réel.
