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

avec Java Discussion :

Bien comprendre le mot clé "implements"


Sujet :

avec Java

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 153
    Points : 59
    Points
    59
    Par défaut Bien comprendre le mot clé "implements"
    Bonjour,
    J'ai du mal à comprendre le mécanisme de "implements", même en lisant le tutoriel
    Est ce que quelqu'un peut m'expliquer à part les interfaces graphiques, il sert à quoi?
    Merci


    C'est bien beau, vous me direz, mais comme ça, ça ne sert à rien. On va donc attribuer une action à ce bouton. Pour cela, il va falloir lui ajouter un listener, un écouteur d'action. En java, un écouteur d'action est un ActionListener. Il faudra donc définir qui va être l'écouteur de notre bouton, dans notre cas, on va dire que c'est la fenêtre elle-même, qui va écouter notre bouton pour ne rien compliquer. Car on peut aussi créer une autre classe qui ferait office d'écouteur. Pour qu'une classe puisse être écouteuse d'action, il faut qu'elle implémente, l'interface ActionListener. Pour cela, il vous suffira d'ajouter dans le signature de la classe implements ActionListener. Ainsi, la signature de notre classe deviendra :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class FenetreAvecBouton extends JFrame implements ActionListener{

  2. #2
    Membre expérimenté

    Homme Profil pro
    Responsable des études
    Inscrit en
    Mars 2009
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2009
    Messages : 553
    Points : 1 672
    Points
    1 672
    Par défaut
    "implements" est l'équivalent de "extends", mais pour les interface. Et c'est "interface" au sens Java, pas au sens "interface graphique" !...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 111
    Points : 118
    Points
    118
    Par défaut
    Bonjour,
    la présence d'"implements" dans la signature d'une classe signifie que cette classe proposera une implémentation de chaque méthode abstraite des interface citées après le mot "implements".
    Dans ton exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public class FenetreAvecBouton extends JFrame implements ActionListener
    cela signifie que la classe FenetreAvecBouton devra déclarer toutes les méthodes abstraites de l'interface ActionListener et en proposer une implémentation.
    Ainsi, la classe FenetreAvecBouton devra présenter une implémentation de la méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     void 	actionPerformed(ActionEvent e)
    Par contre contrairement à "extends" qui ne permet d'hériter que d'une seule classe, "implements" permet d'implémenter plusieurs interface. C'est le fonctionnement de l'héritage multiple en Java.
    Un geek, c'est quelqu'un qui croit qu'il y a 1024m dans 1km...

    Il y a 10 types de geeks, ceux qui savent compter en binaire et les autres...

  4. #4
    Membre chevronné
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Points : 1 855
    Points
    1 855
    Par défaut
    Citation Envoyé par yorgh1234 Voir le message
    Par contre contrairement à "extends" qui ne permet d'hériter que d'une seule classe, "implements" permet d'implémenter plusieurs interface. C'est le fonctionnement de l'héritage multiple en Java.
    euh.... je ne vois vraiment pas ce que l'héritage multiple vient faire là dedans... non?

    pour revenir au sujet: un programmeur qui déclare "implements UneInterface" déclare ceci:
    - j'ai lu la documentation de UneInterface qui décrit la sémantique d'un contrat et je m'engage à réaliser un code correspondant à cette description.
    (si vous n'être pas convaincu par ça lire la doc de "Comparable")
    - comme je suis bien sage cher compilateur voici le code des méthodes exigées par le contrat.
    J'ai des principes: je peux toujours trouver une bonne raison pour les contredire .... mais j'ai des principes!
    (mon excellent bouquin sur Java : https://eska-publishing.com/fr/livre...822407076.html)

  5. #5
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 153
    Points : 59
    Points
    59
    Par défaut
    hic hic, maintenant j'ai plus du mal qu'avant à comprendre
    Quelqu'un peut fournir un exemple de "implements" ou me donne un lien qui a un document sur ça?

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    une interface n'est jamais qu'une liste de méthode que toute classe l'implémentant doit posséder. Ca permet de travailler avec des objets ayant des comportements similaires sans pour autant que ces objet aient une hierarchie commune, ni que ces objets soient d'une type connu pour celui qui a juste besoin des méthodes de l'interface.

    Exempl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public interface Retournable {
        /**
         * Retourne l'objet
         */
        public void retouner(); 
    }

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public class Sablier implements Retournable {
        public void retourner() { /*mettre du code ;)*/}
    }

    et puis quelque part dans ton code, tu travaille avec des retournables, mais tu t'en fous de savoir si ce sont des sablier ou des boites à meuh

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        public void retournerTout(List<Retournable> retournables){
            for (Retournable r: retournables)
                r.retourner();
        }
    }

  7. #7
    Membre du Club
    Inscrit en
    Janvier 2010
    Messages
    153
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 153
    Points : 59
    Points
    59
    Par défaut
    Je comprend, et dans le cas où il y a à la fois extends et implements? J'ai lu quelque part que Java n'accepte pas l'héritage multiple?
    Merci

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    pas d'héritage multiple en java, ca veux dire un seul parent (mot clé "extends"). Il n'y a pas de limitation au nombre d'interfaces qu'une classes peut implémenter (ce n'est pas de l'héritage)

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