Vous êtes sur la page 1sur 15

LES INTERFACES

la programmation orientée objet


Dr. Jihène Tounsi
IHEC-CARTHAGE
Email: tounsi.jihene@yahoo.fr
Qu’est qu’une interface?
 Une interface est un ensemble de (et/ou) :
 Constantes

 Méthodes abstraites
 Méthodes statiques (à partir de java 8)
 pas besoin d’instance pour appeler la méthode statique.
 Méthodes par défaut (à partir de java 8).
 Une interface est déclarée avec le mot
réservé interface
 Une interface n'a pas de constructeurs.
Cours développé par Dr. Jihène Tounsi
Principe
 Une interface peut hériter (extends) de plusieurs
interfaces
 Pour implémenter une interface, il faut utiliser le mot
« implements »
 Une classe qui implémente l’interface
 elle doit implémenter toutes les méthodes abstraites de
l’interface
 Peut utiliser ses constantes et ses méthodes statiques et par
défaut.
 Peut redéfinir la méthode par défaut.

Cours développé par Dr. Jihène Tounsi


Principe
 Des classes non liées hiérarchiquement peuvent
implémenter la même interface
 Une classe peut implémenter plusieurs interfaces
 Un seul « implements » et des virgules séparant les
noms d’interface.

Public class C implements A,B{....}

Cours développé par Dr. Jihène Tounsi


Cours développé par Dr. Jihène Tounsi
Syntaxe java Public class Cl implements A {
Public void M1 (){
//code}
Public float M2(..){//code}
Public interface A { //Appel méthode statique
//Déclaration d’une constante A.super.M4()
Public int const=20; //Appel méthode par défaut
//Méthodes abstraites A.super.M5()
void M1 ();
float M2(..);
//Méthodes statiques
Public static void M4(..){On définit le
code}
//Méthode par défaut
Public default void M5(){//code}

Cours développé par Dr. Jihène Tounsi


implémentation multiple et méthodes
par défaut
 Dans le cas où une classe hérite de deux interfaces
ayant le même nom de méthode, nous aurons une
erreur de compilation.
 Comment enlever la confusion?

public interface A { default void a() { // implémentation } }


public interface B { default void a() { // implémentation } }

public class C implements A, B


{ // !!! erreur de compilation !!! // corps de la classe }

Cours développé par Dr. Jihène Tounsi


implémentation multiple et méthodes
par défaut
 Deux solutions possibles
 Créer une implémentation concrète de la méthode a() dans
la classe C. Un implémentation concrète a toujours la priorité
sur une implémentation par défaut.
 Décider qu'une des deux interfaces, par exemple A étend la
seconde. Dans ce cas, A devient plus spécifique que B, et l'on
dit que c'est l'implémentation la plus spécifique qui a la
priorité.

Cours développé par Dr. Jihène Tounsi


L’interface « Comparable »
 Besoin comparer deux objets de la même classe
 Retourne un nombre négatif si l’élément est inférieur à
l’argument.
 Un nombre positif si l’élément est supérieur à l’argument.
 Zéro s’ils sont égaux.

interface Comparable Public class Cl implements Comparable {


{ …
int compareTo(Object o); Public int compareTo (Object o){
}
Cl tmp=(Cl) o; //changement de type
Return this.attr.compareTo(tmp.getattr());

Cours développé par Dr. Jihène Tounsi


Application : Tri d’une Liste
 Implémenter une méthode qui compare deux objets
d’une classe
 Implémenter l’interface Comparable
 Donner le code de la méthode compareTo
 Exp : Classe courrier du dernier TD

 Trier la liste
 Dans la classe qui regroupe les instances de la classe dans
une seule Liste
 Importer : «import java.util.Collections; »
 Créer une méthode de tri et appeler la méthode : «
Collections.sort(Vector L) »

Cours développé par Dr. Jihène Tounsi


L’interface cloneable
 Cloneable
 Un interface pour cloner un objet. Le « clonage » d'un
objet pourrait se définir comme la création d'une copie
par valeur de cet objet. La classe implémentant cette
interface doit implémenter la méthode
public Object clone()

Cours développé par Dr. Jihène Tounsi


Clonage superficiel

class XSurface implements Cloneable{


...
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
}

Cours développé par Dr. Jihène Tounsi


Clonage en profondeur

class XProfondeur implements Cloneable{


X x;
...
public Object clone() throws CloneNotSupportedException {
XProfondeur xp = (XProfondeur)super.clone() ;
xp.x = (X)x.clone();
return xp;
}
}

Cours développé par Dr. Jihène Tounsi


Autres....
 Iterator
 Seriazable
 Runnable
 ....

Cours développé par Dr. Jihène Tounsi


Cours développé par Dr. Jihène Tounsi

Vous aimerez peut-être aussi