Expliqué des dizaines de fois dans des posts précédents, va juste quelques pages plus loin et si vraiment tu as pas compris, pose une question précise.
De toute manière c'est certainement pas en lisant qu'il va apprendre leur utilité. Tant que tu n'es pas confrondé à un problème d'architecture, tu ne trouveras pas tout seul l'utilité d'employer telle ou telle solution, à moins d'être un élève très assidu, et encore.
Pour la définition primaire de l'interface, tape utilité interface dans le moteur de recherche de ce site tu trouveras une bonne centaine de topics, si ce n'est plus.
mais je ne comprends pas où est le fait que les interfaces nous permettent d'éviter la réecriture de code? c quoi la différence entre une interface et l héritage?
L exemple des chiens n'est bien expliqué dans le tuto de site:'(
Là il faut que tu lises des cours (que tu trouveras à foison sur le net).
L'interface et l'héritage ne sont pas comparables.
L'héritage un concept (les enfants héritent des caractéristiques de leurs parents).
L'interface est une technique qui utilise ce concept d'héritage.
un exemple d'utilité ....
tu as une foison d'objet quelquonc .... une fourche, un cailloux, des cranes, ...
tous ces class hérites de choses bien particulières comme par exemple dans le même ordre
Outils, ElementNaturelle, Squelette,...
maintenant tu aimerais pouvoir stocker tous les objets qui peuvent êtres une armes dans une Graaannde liste affin que quand le joueur veux choisir son arme, il n'y a plus qu'a parcourir la liste
et quand il utilise l'arme, peut importe comment elle fait, tu as juste envie de faire arme.attaque(Cible toto) pour que le joueur puisse attaquer avec ....
ben pour faire ça tu créé une interfarce Arme, avec dedans une fonction astraite, "public void attaque(Cible toto);"
ainsi tous les objets qui implementerons cette interfaces pourront être utilisé comme une arme tu aura plus qu'a faire
Arme[] armepossible = new Arme[3];
Arme[1] = new fourche();
Arme[2] = new cailloux();
...
apres ça il suffit que l'objet "joueur contienne un objet de type "Arme" denouveau
Joueur.setArme(Arme[1]);
et la fonction d'attaque du joueur se résume à : peut importe l'arme ... ça marche toujours ....
public class Joueur{
Arme sonArme;
Joueur cibleactuelle;
public void attaqueCible(){
sonArme.attaque(cibleactuelle);}
public void setArme(Arme toto){sonArme=toto;}
}
bien sur ici il manque les fonction qui déterminent la cible actuelle du joueur .. mais bon l'idée est là
mais je ne comprends pas où est le fait que les interfaces nous permettent d'éviter la réecriture de code?
Ben un exemple tout simple, imagine une classe avec une méthode statique qui trie des tableaux (mais alors une méthode vraiment hyper performante écrite par un druide à laquelle tu comprends rien de rien ), cette méthode heureusement pour toi prend des objets qui implémentent l'interface Comparable (qui définit une méthode qui permet de comparer deux objets).
Du coup, il te suffit d'implémenter Comparable dans une de te classes pour être aussi performant que le druide
Citation : Averroes
c quoi la différence entre une interface et l héritage?
Les interfaces ne définissent que des en-têtes de méthodes, contrairement à l'héritage où tu as des attributs et des méthodes avec éventuellement du code.
Aussi, en java (contrairement au C++) on n'hérite que d'une seule classe (donc si tu hérite de quelque chose, hop fini les méthodes de druides), l'astuce est donc de passer par les interfaces pour implémenter différent comportements .
"'But I don't want to go among mad people,' said Alice. 'Oh, you can't help that,' said the cat. 'We're all mad here.'" Lewis Carroll
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
"'But I don't want to go among mad people,' said Alice. 'Oh, you can't help that,' said the cat. 'We're all mad here.'" Lewis Carroll