Ni l'un ni l'autre. Si vous le définissez, ce n'est pas la valeur par défaut.
Le constructeur par défaut est le constructeur sans argument généré automatiquement à moins que vous ne définissiez un autre constructeur. Tous les champs non initialisés prendront leur valeur par défaut. Pour votre exemple, cela ressemblerait à ceci en supposant que les types sont String
, int
y int
et que la classe elle-même est publique :
public Module()
{
super();
this.name = null;
this.credits = 0;
this.hours = 0;
}
C'est exactement la même chose que
public Module()
{}
Et c'est exactement la même chose que de ne pas avoir de constructeurs du tout. Cependant, si vous définissez au moins un constructeur, le constructeur par défaut n'est pas généré.
Référence : Spécification du langage Java
Si une classe ne contient aucune déclaration de constructeur, un constructeur par défaut sans paramètres formels et sans clause throws est implicitement déclaré.
Clarification
Techniquement, ce n'est pas le constructeur (par défaut ou autre) qui initialise les champs par défaut. Cependant, je le laisse dans la réponse parce que
- la question comportait une erreur dans les valeurs par défaut, et
- le constructeur a exactement le même effet, qu'ils soient inclus ou non.