Bohjour,
je suis debutant en java.
Je voudrais savoir quelle est la difference entre extends et implements.
Merci d' avance.
Bohjour,
je suis debutant en java.
Je voudrais savoir quelle est la difference entre extends et implements.
Merci d' avance.
extends sert pour hériter d'une classe
implements sert pour "hériter" d'une interface (c'est à dire d'une certaine manière d'une classe totalement abstraite qui est une sorte de contrat)
Salut,
Oui.Envoyé par chtig
Je dirais d'ailleurs qu'extends sert à hériter tout court (extends == étendre).
Non : il ne s'agit pas vraiment d'héritage : implements signifie qu'une classe implémente une interface, et doit donc proposer une implémentation de toutes ses méthodes.Envoyé par chtig
D'ailleurs pour l'héritage d'interface on utilises également extends :
a++
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 public interface MyCollection extends Collection { public void print(); }
Je cherchais à donner une explication simple ... Mais si tu veux rentrer dans les détails, on peut :
C'est faux. La classe peut très bien être abstraite, et aller jusqu'à ne proposer aucune implémentation de méthodes.Non : il ne s'agit pas vraiment d'héritage : implements signifie qu'une classe implémente une interface, et doit donc proposer une implémentation de toutes ses méthodes.
Exact, mais je ne voulais pas embrouillerD'ailleurs pour l'héritage d'interface on utilises également extends
Maintenant, pour rentrer dans des débats philosophiques, on peut chercher la différence entre une classe abstraite qui n'a que des méthodes abstraites et une interface. Et ensuite chercher la différence entre hériter d'une telle classe ou implémenter une interface ...
Mais les classes filles non-abstraite seront bien obligées d'implementer ces méthodes. Bref au final il y a bien une obligation d'implémentation.Envoyé par chtig
Ce que je voulais dire c'est que le mot-clef implements ne donne pas une notion d'héritage.
a++
Et n'oubliez pas également de préciser - et débattre - de la signification de ces termes dans le cadre des génériques.
Bon... avant, on va attendre l'avis de otari![]()
Bonjour,
Je suis complètement perdu face à ces mots. Je développe en PHP mais je n'arrive pas à savoir ce que sont les interfaces et implémentations.
Quelle est la différence entre une instanciation et une implémentation? Enfin, je sais ce qu'est une instanciation mais la notion d'interface et d'implémentation me sont complètement étrangères....
Pouvez-vous m'expliquer de manière contructive avec des exemples simple à l'appuis?
Je vous remercie beaucoup.
Une interface est un contrat de service.
Par exemple toi tu es fabriquant de clés USB. Et moi j'ai développé un logiciel super sympa et tu as envie que tes clés USB soient prisent en compte dans mon logiciel. Sauf que d'un autre côté je connais un autre fabriquant qui lui a créé d'autres types de clés USB.
Arrivé un moment je me dis "je ne vais quand même pas m'adapter à vos spécificités de fabriquant et devoir revoir le code de mon logiciel à chaque nouvelle demande". Alors on se met d'accord sur une interface commune à respecter et si vous voulez que j'intègre vos clés USB bah vous vous débrouillez pour créer l'implémentation qui va bien, moi je ne ferai que manipuler l'interface sans me soucier de l'implémentation qui se trouve derrière :
C'est ce qui se passe avec JDBC par exemple, ce n'est qu'un contrat de service, après à chaque SGBD de fournir l'implémentation qui va bien si il veut pouvoir être utilisé dans les applications Java.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 public interface CleUSB { public File[] getFiles(); public File getFile(String path); // ... } // Fabriquant A : public class CleUSBImplementationFabriquantA implements CleUSB { public File[] getFiles() { // je vais chercher nanana } // ... } // Fabriquant B : public class CleUSBImplementationFabriquantB implements CleUSB { // .... }
J'ai pas mieux comme exemples sous la main là comme ça...
Les notions de classe, d'interface, d'héritage, d'implémentation, d'instanciation... font partie des bases du langages JAVA, et même plus généralement de tous les langages objets.
Ces notions (avec des exemples) sont donc généralement copieusement détaillées dans la majorité des livres/cours/tutoriaux pour débutants. Je t'invite donc à aller en chercher et à les lire. Tu y trouveras les réponses que tu cherches.
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
@Duc Lebowski :
Merci pour cet exemple bien concret. Cet après-midi, j'ai demandé des explications à mon prof de prog' et ton explication + la sienne font que j'ai déjà beaucoup moins de brouillard devant mon écran
@CyberChouan :
Merci pour cette réponse constructive.
Ca fait plusieurs mois que j'essaie de comprendre, j'ai des cours, de prog, de méthodologie de prog (Merise, UML, Design Patterns, MDA, MVC, etc) mais je ne les comprends qu'à moitié car il manque cette notion d'interface et d'implémentation. Alors crois-en que je sais bien que c'est la base de la prog Obj et si je m'en résouds à demander ici, c'est pour avoir une explication à mon niveau et non pas celle des cours que j'ai qui sont trop peu didactiques finalement.
Mais merci quand même de me rappeller comment fonctionne "la recherche par soi-même" xD
Voir aussi cette discussion, tu l'apprécieras.
Je ne trouve pas ma réponse particulièrement "non constructive": je me contente de rappeler les règles de fonctionnement du forum. Et si je n'ai pas pris la peine de donner plus de détails, c'est pour ne pas répéter des informations qui se trouvent déjà en abondance sur le net.
D'ailleurs, je dirais même que la réponse étais dans mon post (cachée dans la signature... j'avoue, c'est un peu fourbe). Si tu avais pris la peine de suivre le lien "tutoriaux" qui y figure, tu serais tombé, dans la première section "Cours magistraux et d'initiation" sur:
- http://mbaron.developpez.com/javase/java/
- http://tahe.developpez.com/java/cours/
Ces documents, entre autres, donnent l'explication des notions avec les exemples concrets que tu cherches. Je les ai trouvés en moins d'une minute de recherche...
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
Ok, mais j'étais un peu pressé mais quand je le suis moins, je prends plus le temps de chercher.
Merci quand même![]()
Partager