Une classe peut avoir plusieurs constructeurs.

Par exemple, on peut ne pas connaître tout de suite le prix d'un livre (car, par exemple, il sera fixé plus tard). En ce cas, dans la classe Livre, il y aura un constructeur qui ne prendra que le titre et l'auteur du livre et un autre (si on connait le prix) qui aura 3 paramètres, le titre, l'auteur et le prix.

Souvent les constructeurs ont du code en commun. Vous verrez dans le cours (et on vous l'a sans doute déjà dit dans d'autres cours) qu'il n'est pas bon d'avoir le même code répété à plusieurs endroits d'un programme.

Pour éviter de répéter dans un constructeur un code qui est déjà dans un autre, Java offre la possibilité d'appeler un constructeur dans un autre constructeur avec le mot clé this(...). Cet appel ne peut être que la première instruction d'un constructeur.

Par exemple, si vous avez une classe C, vous pouvez écrire

public C(int a, int b, double c) {
  this(a, b);
  ...
}

public C (int a, int b) {
  ...
}

this(a, b) du 1er constructeur est un appel au 2ème constructeur.