Utilisation des interfaces

Soyez le premier à donner votre avis sur cette source.

Vue 6 169 fois - Téléchargée 917 fois

Description

Ce tutoriel explique l'utilité des interfaces, comment et pourquoi les créer, comment les appeler dans les classes.

Il s'adresse au débutants.

1. Qu'est ce qu'une interface ?


Une interface définit un ensemble de méthodes qu'une classe pourra implémenter. Toutes les méthodes d'une interface sont abstraites.
Les interfaces sont implémentées par des classes. Si une classe implémente une interface alors, la classe va définir l'ensemble des méthodes présentes dans l'interface.

2. Création d'une interface


Pour créer une interface, il suffit de créer un nouveau fichier java et d?écrire :
/** 
 * Exemple d'interface
 * 
 * @author julien 
 * @version 1.0 
 */
public interface NomInterface { 

    /** 
     * Definition d'une procedure 
     */
    public void methodeA(); 

    /** 
     * Definition d'une fonction 
     */
    public String methodeB(); 

    /** 
     * Definition d'une autre fonction 
     */
    public int methodeC(String a); 

}

3. Implémenter une interface


Les classes implémentant l?interface doivent redéfinir les méthodes de l?interface (selon les version du jdk, on peut placer l?annotation @Override avant ces méthodes pour préciser qu?elles définissent les méthodes d?une classe mère ou d?une interface). La classe sera donc écrite de la facon suivante, en précisant implements NomInterface :
/** 
 * Classe implémentant l'interface précédemment créée. 
 * Si on ne redéfinit pas la javadoc dans cette classe,  
 * la javadoc de l'interface sera automatiquement reprise. 
 */
public class ClasseA implements NomInterface { 

    public void methodeA(){ 
        //Traitement 
    } 
    
    public String methodeB(){ 
        //Traitement 
        return null; 
    } 
    
    public int methodeC(String a){ 
        //Traitement 
        return 0; 
    } 
} 


4. Utilité des interfaces
Les interfaces servent à définir un ensemble de méthodes que les classes filles doivent définir.
Les interfaces sont utiles pour réduire la dépendance entre classes. Par exemple, nous allons prendre l'interface List qui définit un certain nombre de méthodes présentes sur tous les types de listes (add, remove, etc.) voir http://download.oracle.com/javase/1.4.2/docs/api/j ava/util/List.html
Les classes LinkedList et ArrayList implémentent cette interface de deux manières différentes. Si nous voulons créer une classe ClasseExemple qui contient un attribut de type liste, nous pouvons le faire de cette façon
public class ClasseExemple{ 

     private ArrayList<String> liste; 

     public ClasseExemple(ArrayList<String liste){ 
          this.liste=liste; 
          liste.add("el1"); 
     } 

} 

Cette utilisation revient à dire : pour instancier cette classe j'ai besoin d'une instance de la classe ArrayList. La classe dépend donc directement de ArrayList
Par contre, la classe suivante n'a aucune dépendance avec ArrayList
public class ClasseExemple{ 

     private List<String> liste; 

     public ClasseExemple(List<String liste){ 
          this.liste=liste; 
          liste.add("el1"); 
     } 

} 

Cette utilisation revient à dire : pour instancier cette classe j'ai besoin d'une instance d'une classe qui possède les méthodes décrites dans la classe List (add en fait partie). De cette facon, la classe pourra être utilisée aussi bien avec des objets ArrayList que LinkedList

Un exemple concret de cette utilisation est l'interface Comparable, la méthode Collections.sort(Collection c) qui trie les objets d'une liste fonctionne avec toutes les collections de classes qui implémentent l'interface Comparable.
La classes collections.sort est donc utilisable avec toutes les collections contenant des éléments qui l'on peut comparer.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248 -
Je ne peux pas placer ce code dans la catégorie Tutoriaux, je suis sous linix, je n'ai pas Word et la mise en forme est mauvais avec mon navigateur.
cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248 -
Le fichier pdf offre maintenant une présentation bien plus soignée.
cs_futty
Messages postés
11
Date d'inscription
lundi 14 février 2011
Statut
Membre
Dernière intervention
18 mai 2011
-
cs_Julien39
Messages postés
6413
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
17 mai 2018
248 -
Que veux tu dire par là, je n'ai jamais lu ce tutoriel ??

Qu'il y ait des choses semblables, c'est normal, ce sont deux tutoriels sur le même sijet. En revanche, je ne pense pas que la partie utilité des interfaces se retrouve sur ton tutoriel.

Après, tu peux trouver ca trop simple, ou mauvais, c'est ton droit.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.