Maîtriser les constructeurs et le mot-clé this en Java

![CDATA[

En Java, un constructeur est une méthode spéciale dédiée à l'initialisation des nouveaux objets. Lorsqu'aucun constructeur n'est explicitement défini dans une classe, le compilateur génère automatiquement un constructeur par défaut sans paramètres. Dès qu'un constructeur personnalisé est déclaré, ce cosntructeur par défaut n'est plus disponible.

La syntaxe suit ce modèle : modificateur d'accès + nom de classe + liste de paramètres. Par exemple :

public Employe(String identifiant, double remuneration) {
    this.identifiant = identifiant;
    this.remuneration = remuneration;
}

Illustrons avec une classe Employe :

public class Employe {
    private String identifiant;
    private double remuneration;

    public Employe() {
        System.out.println("Initialisation standard");
    }

    public Employe(String identifiant, double remuneration) {
        this.identifiant = identifiant;
        this.remuneration = remuneration;
    }

    public void executerTache() {
        System.out.println(identifiant + " traite les opérations");
    }

    public void afficherRemuneration() {
        System.out.println("Rémunération : " + remuneration + " €");
    }
}

L'instanciation utilise l'opérateur new :

public class TestEmploye {
    public static void main(String[] args) {
        Employe staff1 = new Employe();
        Employe staff2 = new Employe("Dupont", 4200.0);
        staff2.executerTache();
        staff2.afficherRemuneration();
    }
}

Sortie obtenue :

Initialisation standard
Dupont traite les opérations
Rémunération : 4200.0 €

L'ordre d'initialisation des attributs suit cette séquence : valeur par défaut (zéro/null), initialisation explicite dans la déclaration, constructeur, puis méthodes d'accès.

Exemple avec la classe Rectangle :

public class Rectangle {
    private double longueur;
    private double largeur;

    public Rectangle() {
        this(1.0);
    }

    public Rectangle(double dimension) {
        this(dimension, dimension);
    }

    public Rectangle(double longueur, double largeur) {
        this.longueur = longueur;
        this.largeur = largeur;
    }

    public void setLongueur(double longueur) {
        this.longueur = longueur;
    }

    public double getLongueur() {
        return longueur;
    }
}

Test d'utilisation :

public class TestRectangle {
    public static void main(String[] args) {
        Rectangle forme = new Rectangle(6.2, 4.8);
        System.out.println(forme.getLongueur());
        forme.setLongueur(9.1);
        System.out.println(forme.getLongueur());
    }
}

Résultats :

6.2
9.1

Un JavaBean respecte ces convenitons : classe publique, constructeur sans paramètres, propriétés privées avec méthodes d'accès get/set. Ce modèle permet la création de composants réutilisables dans les applications.

Le mot-clé this référence l'instance courante et sert à :

  • Résoudre les conflits de noms entre paramètres et atttributs
  • Chaîner les constructeurs (doit être la première instruction)

Exemple dans un mutateur :

public void setIdentifiant(String identifiant) {
    this.identifiant = identifiant;
}

Démonstration avec la classe CompteBancaire :

public class CompteBancaire {
    private double solde;

    public CompteBancaire(double soldeInitial) {
        this.solde = soldeInitial;
    }

    public void deposer(double montant) {
        this.solde += montant;
    }

    public double getSolde() {
        return solde;
    }

    public void comparer(CompteBancaire compteCible) {
        if (this.solde > compteCible.solde) {
            System.out.println("Solde supérieur détecté");
        } else if (this.solde < compteCible.solde) {
            System.out.println("Solde inférieur détecté");
        } else {
            System.out.println("Soldes identiques");
        }
    }
}

Utilisation pratique :

public class TestCompte {
    public static void main(String[] args) {
        CompteBancaire compteA = new CompteBancaire(1500.0);
        CompteBancaire compteB = new CompteBancaire(850.0);
        compteA.comparer(compteB);
    }
}

Sortie générée :

Solde supérieur détecté

]]>

Étiquettes: Java constructeur this JavaBean

Publié le 12 août à 22h07