Une interface définit un contrat que certaines classes pourront s'engager à respecter.
Une interface est définie "parallèlement" aux classes.
Une interface contient :
Voici un exemple d'interface qui nous servira dans les items suivants, que nous avons mise dans un paquetage nommé utilitaires :
package utilitaires;
public interface Comparable {
// devra retourner -1, 0 ou 1 selon que l'objet concerne est considere comme plus petit, egal ou plus grand que l'objet o
int comparerA(Object o);
}
On aurait pu aussi consdérer l'interface ci-dessous, qui ne nous sera pas utile mais qui permet de voir qu'on peut déclarer des constantes dans une interface.
public interface ComparableBis {L'interface ComparableBis contient la constante entière MAX et une déclaration de la méthode comparerA.
public static final int MAX = 100;
public int comparerA(Object o);
}
Une interface I peut être implémentée par une classeA, ce qui signifie que
Une classe qui implémentent l'interface ComparableBis sera donc dans l'obligation de définir la méthode comparerA, sans quoi elle serait abstraite, et possédera la contante MAX. La définition de la méthode comparerA sera obligatoirement de visibilité public.
Un nom d'interface peut être utilisé comme un nom de classe. Si I est une interface, on pourra écrire :
I i;
La variable i pourra alors référencer n'importe quel objet obj d'une classe implémentant l'interface I et on pourra appliquer à obj une méthode déclarée dans l'interface ; en effet, on ne peut pas instancier une classe abstraite ; si obj est une instance d'une classe qui implémente l'interface I, il est certain que obj dispose des méthodes définies par l'interface.
Une interface :
Si une classe A implémente une interface I, les sous-classes de A implémentent aussi automatiquement I.
L'interface Comparable sera implémentée par des
classes d'objets qu'on souhaite comparables entre eux. Nous l'utilisons
dans les exemples qui suivent.
© Irène Charon Télécom ParisTech 2012