• Home
  • Docker
  • Kubernetes
  • LLMs
  • Java
  • Ubuntu
  • Maven
  • Big Data
  • Archived
Java | Constructeurs
  1. Constructeurs
  2. Règles de déclaration des constructeurs
  3. Informations à savoir sur le code des constrcuteurs
  4. Informations à savoir sur l'exécution des constructeurs

  1. Constructeurs
    Toutes les classes (incluant les classes abstraites) doivent déclarer au moins un constructeur.
    Par défaut, si la classe ne déclare aucun constructeur, le compilateur crée un constructeur sans paramètres (appelé aussi un constructeur par défaut).

    Attention : le compilateur ne créera aucun constructeur si la classe déclare au moins un constructeur.

    Par exemple, pour la classe ClassA le compilateur va créer par défaut le constructeur sans paramètres ClassA() {}:

    La classe ClassB n'aura pas de constructeur sans paramètres:

    Important : les constructeurs ne sont pas héritables ; une sous-classe n'hérite pas les constructeurs de ses superclasses et par conséquent les concepts d'héritage et de redéfinition ne s'appliquent pas aux constructeurs.
  2. Règles de déclaration des constructeurs
    1. Un constructeur ne peut pas retourner une valeur, et par conséquent il ne doit pas déclarer un type de retour.
      On ne peut même pas utiliser le mot clé void.

    2. Un constructeur peut avoir aucun ou plusieurs paramètres.

    3. La déclaration du constructeur peut utiliser n'importe quel modificateur d'accès : public, protected, private, ou l'accès par défaut.

    4. La déclaration du constructeur ne peut pas utiliser les autres modificateurs comme final, static, ...

    5. Le nom du constructeur doit être le même que celui de la classe où le constructeur est déclaré.

      Attention : Java est sensible à la casse, donc le nom du constructeur et le nom de la classe doivent être exactement pareils.


      Il est possible de déclarer une méthode qui a exactement le même nom que celui de la classe ; la différence entre une méthode et un constructeur est :
      • Un constructeur ne déclare pas un type de retour.

      • Un constructeur peut être invoqué par l'operateur new (instanciation).

      • Un constructeur peut être invoqué uniquement à partir de d'autres constructeurs (il ne peut pas être appelé à partir d'une méthode ou d'un bloc d'initialisation).

    6. Il est possible de déclarer plusieurs constructeurs (surcharge des constructeurs) pour la même classe, à condition que les signatures des constructeurs soient différentes (voir les règles de surcharge des méthodes).
  3. Informations à savoir sur le code des constrcuteurs
    1. Le compilateur peut ajouter, au début du code du constructeur, un appel au constructeur sans paramètres de la superclasse (super()).

      Attention : le compilateur n'ajoutera aucun appel au constructeur sans paramètres de la superclasse si le code du constructeur contient :
      • un appel explicit (avec le mot clé this) à un autre constructeur de la même classe ;

      • ou un appel explicit (avec le mot clé super) à un constructeur de la superclasse.


    2. Si la superclasse ne déclare pas un constructeur sans paramètres, alors il faut ajouter un appel explicite dans le code du constructeur pour invoquer un constructeur de la superclasse qui déclare des paramètres.

      Sinon le compilateur affichera un message d'erreur car, comme vu ci-dessus, le compilateur va essayer d'ajouter un appel au constructeur sans paramètres de la superclasse qui, dans ce cas, ne déclare pas un constructeur sans paramètres !

      Pour comprendre l'erreur, voici le code du constructeur comme il est vu par le compilateur :
    3. Si les mots clés this et super sont utilisés dans le code du constructeur, il faut qu'ils soient les premières instructions du code, sinon le compilateur générera une erreur.

    4. Le compilateur générera une erreur si les constructeurs font des appels récursifs.

    5. Il n'est pas possible de passer une variable d'instance (ou un appel à une méthode d'instance) en argument à this(); ou super();.

      Seuls les paramètres du constructeur, les variables de classe, et les méthodes statiques peuvent être passés en argument à this(); ou super();.

      On ne peut pas, dans le code du constructeur, utiliser une variable d'instance ou invoquer une méthode d'instance avant que l'exécution du constructeur parent soit complètement terminé.
  4. Informations à savoir sur l'exécution des constructeurs
    1. Les constructeurs sont exécutés lors de la création d'une nouvelle instance d'une classe : l'instanciation est faite en utilisant le mot clé new.

      Les arguments passés avec le mot clé new décident quel constructeur sera exécuté.

    2. Il est possible d'exécuter plusieurs constructeurs d'une classe lors de son instanciation : le constructeur exécuté en utilisant le mot clé new peut invoquer un autre constructeur de la même classe en utilisant le mot clé this. L'autre constructeur peut à son tour utiliser this pour invoquer un autre constructeur, et ainsi de suite. Voir ci-dessus les détails sur les appels récursifs des constructeurs.

      Les arguments passés avec le mot clé this décident quel constructeur sera exécuté.

      Rappel : L'instruction this (comme c'est le cas avec super) doit être la première ligne du code du constructeur (voir détail ci-dessus).


    3. L'instanciation garantie qu'au moins un constructeur sera exécuté pour chaque superclasse : le constructeur exécuté avec le mot clé new peut invoquer un autre constructeur de la superclasse en utilisant le mot clé super. Le constructeur de la superclasse peut à son tour utiliser le mot clé super pour invoquer un constructeur de sa superclasse, et ainsi de suite.

      Les arguments passés avec le mot clé super décident quel constructeur de la superclasse sera exécuté.

      Rappel : Le compilateur ajoute par défaut l'instruction super(); au début du code du constructeur, si celui ci ne contient pas un appel explicite au mot clé this ou super.

© 2025  mtitek