Dans le cas de la classe CompteurNBits, nous avons fourni un seul constructeur.
Il est possible d'en fournir d'autres à partir du moment où la signature est différente. Pour un constructeur,
la signature est caractérisée par le nombre de paramètres et leur type.
class CompteurNBits {
/** 0 ≤ etat < 2n */
int etat;
/** 0 < n < 31 */
byte n;
/** Constructeur qui permet seulement d'initialiser le nombre de bits.
* @param n nombre de bits pour coder l'état, 0 < valeur < 31
*/
CompteurNBits(byte n) {
this.n = n;
this.etat = 0;
}
/** Constructeur qui permet d'initialiser le nombre de bits et l'état
* @param n nombre de bits pour coder l'état, 0 < n < 31
* @param etat valeur initiale de l'état, 0 ≤ etat < 2n
*/
CompteurNBits(int etat, byte n) {
this(n); // appel au premier constructeur qui initialise le champ n
this.etat = etat;
}
}
Le constructeur est surchargé, mais il n'y a pas d'ambiguïté, puisque le premier a un paramètre
et le deuxième en a deux. new CompteurNBits(8) permet de construire un
compteur 8 bits initialisé par défaut à 0,
new CompteurNBits(5, 8) utilise le deuxième constructeur pour construire un
compteur 8 bits initialisé à la valeur 5.
On remarque également que l'identificateur n est également surchargé. Il est
parfois utilisé comme un champs et parfois comme un paramètre. Le this.n permet
de distinguer le champ du paramètre.