Salut,
Une interface ne fait que décrire un ensemble de méthode pour un mecanisme, sans fournir aucune implémentation.
Par exemple l'interface Collection décrit tout un ensemble de méthode pour gérer des collections de données (ajout/suppression d'élément, etc...).
Si chaque méthode est décrite, rien n'est préciser concernant le mecanisme interne de ces méthodes...
La classe ArrayList implémente cette interface (et même l'interface List d'ailleurs), et permet de gérer un tableau facilement.
Mais il existe d'autre implémentation avec leurs spécificité (LinkedList qui gère une liste chainé, les Set qui n'accepte pas de doublons...).
Tu utiliseras ces différentes implémentations selon tes besoins (pour plus de détail, voir la FAQ : Structures de données -Tableaux et collections).
Maintenant pourquoi utiliser ceci :
Collection c = new ArrayList();
ou :
List list = new ArrayList();
Tout simplement pour ne pas te baser sur une implémentation particulière, mais pour rester le plus général possible.
Si demain tu t'aperçois que tu dois changer d'implémentation, il te suffit de changer l'instanciation de ta collection, sans avoir à impacter tut ton code...
De même si tu écris une méthode du style :
1 2 3 4 5 6
| public void printAll(ArrayList list) {
Iterator iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
} |
Tu limites l'utilisation de ta méthode aux ArrayList, alors que si tu utilisais une Collection, ta méthode serait utilisable par toutes les implémentations possibles...
Grosso-modo, en utilisant l'interface du écris du code qui n'est pas spécifique à une implémentation particulière, ce qui permet une meilleure évolution et une meilleure réutilisation du code...
J'espère avoir été clair...
a++
Partager