Les interfaces¶
Une interface est une classe qui ne dit pas comment sont implémentées les méthodes mais, seulement ce qu’elles devront faire.
C’est en quelque sorte un contrat !
Voici ce qui doit être fait, alors vous serez en mesure de le faire en temps voulu. Une interface ne contient pas de méthode seulement leur signature.
Pour déclarer une interface en Java on utilise le mot clé interface.
Une classe peut implémenter plusieurs interfaces.
Pour utiliser une interface une classe doit absolument redéfinir toutes les méthodes de l’interface.
Par contre, chaque classe est libre de déterminer les détails de l’implémentation.
Les interfaces ressemblent beaucoup aux classes abstraites par contre elles permettent de décrire un comportement commun pour des objets non lié à une hiérarchie d’héritage. Autrement dit, une interface déconnecte la définition d’une (ou de plusieurs) méthode de sa hiérarchie.
Voici un exemple de déclaration d’interface
public interface AnimalInterface {
public void parler();
public void manger(Object nourriture);
public void marcher();
}
Pour implémenter (utiliser) cette interface Java propose le mot clé implements :
public class Singe implements AnimalInterface {
@Override
public void parler() {
System.out.println("Le singe parle");
}
@Override
public void manger(Object nourriture) {
System.out.println("Le singe mange : " + nourriture.toString());
}
@Override
public void marcher() {
System.out.println("Le singe marche");
}
}
Du côté de la modélisation, la manière UML pour représenter une interface d’ajouter ‘<
En voici un exemple :
Si nous voulions utiliser l’interface précédente pour implémenter les méthodes dans une classe concrète cela ressemblerait à :
La notion d’implémentation (le mot clé implements) est représentée par une flèche en pointillé.
En contraste avec la classe abstraite, l’interface ne peut pas implémenter de méthode directement dans sa définition.
La classe abstraite elle le peut! À ce titre, une classe abstraite dont toutes les méthodes serait abstraite pourrait être utilisée comme une interface.
Comme nous l’avons dit précédemment une classe peut implémenter plusieurs interfaces. En voici un exemple :
Au même titre que les classe, les interfaces peuvent être étendues à partie d’une autre interface.
Cependant, contrairement aux classes, qui ne peuvent qu’hériter que d’une seule autre classe, les interfaces peuvent hériter de plusieurs interfaces.
Une interface peut posséder des méthodes statiques mais, doivent les implémenter!
En voici un exemple:
public interface VoitureInterface {
public static void executerDiagnostiqueInterne(){
// Éxécuter le diagnostique interne de la voiture
}
public void avancer();
public void reculer();
}
L’appel à la méthode statique ce fait de la même manière qu’avec les classes.
Les méthodes d’instance statique peuvent être utiles quand nous avons besoin de petits utilitaires rapide et facile d’accès.