Java pour l'informatique industrielle
Chapitre 1. Introduction aux objets
Chapitre 2. Les structures de contrôle
Chapitre 3. Unifier et réutiliser
3.1. Motivation
3.2. Exploiter l'orthogonalité
3.3. Les interfaces
3.3.1. La déclaration
3.3.2. L'implémentation
3.3.3. Les interfaces en UML
3.3.4. Les instances
3.4. Le polymorphisme
3.5. L'héritage
3.6. Les collections
3.7. Objets et HDL
Chapitre 4. Modèle, Vue et Contrôle
Chapitre 5. Les entrées/sorties
Page d'accueilTable des matièresNiveau supérieurPage précédenteBas de la pagePage suivante

3.3.2. L'implémentation

Les classes qui remplissent le contrat (défini par une interface) doivent le déclarer. Le compilateur vérifie que c'est le cas.

class Compteur implements ICompteur { int etat; public int getEtat() { return this.etat; } public void incrementer() { this.etat += 1; } }class Compteur5Bits implements ICompteur { byte etat; public int getEtat() { return this.etat; } public void incrementer() { if (etat < 0x1F) { this.etat += 1; } else { this.etat = 0; } } }
Source : Compteur.java Source : Compteur5Bits.java

On peut remarquer que cela ne change rien au code. Les deux classes déclarent simplement qu'elles remplissent le contrat, elles ont les deux méthodes publiques déclarées par l'interface ICompteur avec exactement la même signature. En particulier, la méthode getEtat de la classe Compteur5Bits renvoie un int et non un byte. Cela ne pose aucun problème car byte est un sous-ensemble de int.

Page d'accueilTable des matièresNiveau supérieurPage précédenteHaut de la pagePage suivante