IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

extends & implements


Sujet :

Langage Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    38
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 38
    Points : 29
    Points
    29
    Par défaut extends & implements
    Bohjour,
    je suis debutant en java.
    Je voudrais savoir quelle est la difference entre extends et implements.
    Merci d' avance.

  2. #2
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    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)

  3. #3
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par chtig
    extends sert pour hériter d'une classe
    Oui.

    Je dirais d'ailleurs qu'extends sert à hériter tout court (extends == étendre).

    Citation Envoyé par chtig
    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)
    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.


    D'ailleurs pour l'héritage d'interface on utilises également extends :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public interface MyCollection extends Collection {
     
        public void print();
     
    }
    a++

  4. #4
    Membre chevronné
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 348
    Points : 1 787
    Points
    1 787
    Par défaut
    Je cherchais à donner une explication simple ... Mais si tu veux rentrer dans les détails, on peut :
    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.
    C'est faux. La classe peut très bien être abstraite, et aller jusqu'à ne proposer aucune implémentation de méthodes.
    D'ailleurs pour l'héritage d'interface on utilises également extends
    Exact, mais je ne voulais pas embrouiller

    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 ...

  5. #5
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par chtig
    C'est faux. La classe peut très bien être abstraite, et aller jusqu'à ne proposer aucune implémentation de méthodes.
    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.

    Ce que je voulais dire c'est que le mot-clef implements ne donne pas une notion d'héritage.

    a++

  6. #6
    Membre émérite
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Points : 2 582
    Points
    2 582
    Par défaut
    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
    Mieux que Google, utilisez Sur Java spécialisé sur la plate-forme java !
    Pour réaliser vos applications Java dans le cadre de prestations, forfait, conseil, contactez-moi en message privé.

  7. #7
    Membre du Club Avatar de eexit
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Points : 50
    Points
    50
    Par défaut
    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.
    Etudiant L3 Informatique
    --
    Twitter | Blog | Website

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Points : 540
    Points
    540
    Par défaut
    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 :

    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
    {
      // ....
    }
    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.

    J'ai pas mieux comme exemples sous la main là comme ça...

  9. #9
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par eexit Voir le message
    Pouvez-vous m'expliquer de manière contructive avec des exemples simple à l'appuis?
    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

  10. #10
    Membre du Club Avatar de eexit
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Points : 50
    Points
    50
    Par défaut
    @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
    Etudiant L3 Informatique
    --
    Twitter | Blog | Website

  11. #11
    Membre averti Avatar de Amine_sas
    Profil pro
    Étudiant
    Inscrit en
    Juin 2005
    Messages
    245
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2005
    Messages : 245
    Points : 307
    Points
    307
    Par défaut
    Voir aussi cette discussion, tu l'apprécieras .
    "Un remboursement des programmes défectueux serait envisageable mais toute l'industrie du logiciel ferait faillite la première année." Andrew Tanenbaum.

  12. #12
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Points : 4 314
    Points
    4 314
    Par défaut
    Citation Envoyé par eexit Voir le message
    Merci pour cette réponse constructive.
    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

  13. #13
    Membre du Club Avatar de eexit
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 61
    Points : 50
    Points
    50
    Par défaut
    Ok, mais j'étais un peu pressé mais quand je le suis moins, je prends plus le temps de chercher.

    Merci quand même
    Etudiant L3 Informatique
    --
    Twitter | Blog | Website

Discussions similaires

  1. extends ou implements Comparable ?
    Par guti11 dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 26/06/2013, 18h02
  2. l'utilisation de "extends" et "implements"
    Par HAXOCIS dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 01/11/2010, 12h55
  3. [PHP 5.3] [OO - Debutant] Quelle est la différence entre extend et implement
    Par pierrot10 dans le forum Langage
    Réponses: 1
    Dernier message: 07/03/2010, 14h09
  4. thread avec extends Thread ou implements Runnable, la difference ?
    Par italiasky dans le forum Général Java
    Réponses: 3
    Dernier message: 24/01/2008, 20h38
  5. [Language]Extends, Implements
    Par clairette dans le forum Langage
    Réponses: 5
    Dernier message: 30/05/2005, 15h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo