Exemple de l'interface Comparable

           

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 {
public static final int MAX = 100;
public int comparerA(Object o);
}
L'interface ComparableBis contient la constante entière MAX et une déclaration de la méthode comparerA.
Les constantes et les méthodes d'une interface sont automatiquement publiques, que ce soit mentionné ou non dans l'écriture de l'interface.
Les constantes d'une interface sont automatiquement statiques, que ce soit mentionné ou non dans l'écriture de l'interface.

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.

Le fichier Comparable.java

© Irène Charon Télécom ParisTech 2012