nous reviendrons plus en détail sur ce sujet dans les chapitres suivants, mais
évoquons déjà très succinctement la
notion d’interface, très importante en orienté objet. Une interface est composée uniquement d’un nom et d’un ensemble de signatures de méthodes, y compris le type de retour associé à chaque signature. P ar exemple, l’interface Vehicule pourrait définir la méthode void changeVitesse(int nv). Une interface ne contient aucune information d’implémentation de ses signatures. Si une classe déclare qu’elle implémente une interface, elle est obligée de fournir un code pour chacune des méthodes définies par l’interface. P ar exemple, si la classe Voiture implémente l’interface Vehicule, il faut (sous peine d’erreur de compilation) qu’elle définisse une méthode void changeVitesse(int nv). Le détail du code de cette méthode n’est pas contraint par l’interface et la classe Voiture peut contenir autant d’autres méthodes qu’elle le souhaite, sauf des méthodes dont la signature se trouve dans l’interface mais dont le type de retour serait différent. Notons que tant les interfaces que les classes sont deux types possibles. Le type d’une variable ou d’un attribut pourra être un type primitif, une classe ou une interface. En orienté objet, il est préférable de typer les variables par des interfaces plutôt que par des classes. Le compilateur vérifie que les variables typées par une interface ne réfèrent qu’à des objets qui l’implémentent. P ar exemple, pour une variable de type Vehicule, le compilateur vérifie qu’on n’affecte rien d’autre que des objets implémentant Vehicule, tels ceux issus des classes Voiture, Velo ou Camion. De plus, le compilateur vérifie que seules des méthodes appartenant à l’interface sont appelées sur les variables typées par cette dernière. P ar exemple, pour une variable de type Vehicule, le compilateur acceptera la méthode changeVitesse(int) mais pas changeCouleur(). En substance, les interfaces constituent les modes d’emploi de tous les objets issus des classes qui implémentent cette interface, modes d’emploi dont on pourra informer toute autre classe désirant interagir avec celles implémentant cette interface.