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 :

Du neuf sur les interfaces avec Java 8


Sujet :

Langage Java

  1. #1
    Responsable Java & Kotlin

    Avatar de Mickael Baron
    Homme Profil pro
    Ingénieur de Recherche en Informatique
    Inscrit en
    juillet 2005
    Messages
    14 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche en Informatique
    Secteur : Service public

    Informations forums :
    Inscription : juillet 2005
    Messages : 14 972
    Points : 72 956
    Points
    72 956
    Par défaut Du neuf sur les interfaces avec Java 8
    Olivier Croisier nous propose un tutoriel sur les nouveautés proposées par Java 8. Cet article s'intéresse plus particulièrement sur les nouvelles fonctionnalités introduites dans les interfaces Java.

    Le lien pour le tutoriel : http://oliviercroisier.developpez.co...es-interfaces/

    Profitez de cette discussion pour laisser des commentaires.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Ingénieur de Recherche en informatique au LIAS / ISAE-ENSMA
    Page de Developpez.com : mbaron.developpez.com
    Twitter : www.twitter.com/mickaelbaron
    Blog : mickael-baron.fr
    LinkedIn : www.linkedin.com/in/mickaelbaron
    DBLP : dblp.uni-trier.de/pers/hd/b/Baron:Micka=euml=l

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

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : juillet 2006
    Messages : 1 244
    Points : 1 834
    Points
    1 834
    Par défaut
    je me permet de signaler un erreur dans ce texte: l'emploi du mot "surcharge" au lieu de "specialisation" ou "redéfinition"
    "surcharge" est le mot pour traduire "overloading" pas "overriding" et donc
    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)

  3. #3
    Membre actif
    Homme Profil pro
    Développement logiciel
    Inscrit en
    mai 2005
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développement logiciel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : mai 2005
    Messages : 71
    Points : 231
    Points
    231
    Par défaut
    Merci pour cet article. J'attendais depuis un moment ces méthodes par défaut dans les interfaces!

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 3 995
    Points : 2 388
    Points
    2 388
    Par défaut
    Pour le coup, je me demande pourquoi ne pas avoir fait la même chose au niveau des classes, en fait. Je cherche une règle qui s'appliquererait plus difficilement à une classe qu'à une interface dans ce que tu expliques, mais je n'en vois pas...

    Merci pour cet article, en tout cas.

  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 015
    Points
    23 015
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Traroth2 Voir le message
    Pour le coup, je me demande pourquoi ne pas avoir fait la même chose au niveau des classes, en fait. Je cherche une règle qui s'appliquererait plus difficilement à une classe qu'à une interface dans ce que tu expliques, mais je n'en vois pas...
    Il n'y a pas besoin de cela au niveau des classes tu peux très bien rajouter une méthode dans une classe sans forcément "tout casser".


    a++

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 3 995
    Points : 2 388
    Points
    2 388
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    Il n'y a pas besoin de cela au niveau des classes tu peux très bien rajouter une méthode dans une classe sans forcément "tout casser".


    a++
    Oui, mais là, on parle de factorisation. Et d'héritage multiple, en fait.

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    12 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 12 320
    Points : 20 851
    Points
    20 851
    Par défaut
    Pour la factorisation, je ne vois toujours pas ce qui t'empêche de le faire avec des classes, maintenant comme depuis toujours.

    Pour l'héritage multiple, le problème est toujours la question de l'héritage en diamant, et du fait que les classes définissent leur état interne. Une interface ne définit pas son état, et les méthodes par défaut ne peuvent qu'utiliser le contrat défini par les méthodes de l'interface, sans qu'il puisse y avoir question de l'effet sur les variables membres et lesquelles interviennent, puisque ça n'existe pas.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre chevronné
    Avatar de la.lune
    Homme Profil pro
    Directeur Technique
    Inscrit en
    décembre 2010
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Comores

    Informations professionnelles :
    Activité : Directeur Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : décembre 2010
    Messages : 544
    Points : 2 072
    Points
    2 072
    Par défaut
    Citation Envoyé par Traroth2 Voir le message
    Oui, mais là, on parle de factorisation. Et d'héritage multiple, en fait.
    Le fait qu'on manipule des méthodes de classe mère dans plusieurs classes filles différentes sans les redéfinir n'est ce pas de la factorisation ? Et quel est dans la réalité l'intérêt d'héritage multiple côté variables membres de l'objet? Ce sont les fonctionnalités qui sont sensé faire l'objet d'héritage multiple d'où le concept d'interface et je crois qu'avec les méthodes par défaut, on va pouvoir enfin faire cet héritage multiple de fonctionnalité sans avoir à implémenter ou réimplémenter les méthodes.

  9. #9
    Membre émérite

    Profil pro
    Inscrit en
    décembre 2003
    Messages
    3 995
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : décembre 2003
    Messages : 3 995
    Points : 2 388
    Points
    2 388
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Pour l'héritage multiple, le problème est toujours la question de l'héritage en diamant, et du fait que les classes définissent leur état interne. Une interface ne définit pas son état, et les méthodes par défaut ne peuvent qu'utiliser le contrat défini par les méthodes de l'interface, sans qu'il puisse y avoir question de l'effet sur les variables membres et lesquelles interviennent, puisque ça n'existe pas.
    Pour les méthodes, rien n'empêcherait de résoudre le sujet exactement comme c'est fait avec les interfaces avec ce nouveau mécanisme de méthode par défaut. Mais effectivement, pour les attributs, ça pourrait devenir scabreux. Ca serait sûrement quand même faisable, mais en y réfléchissant, les méthodes par défaut dans les interfaces permettent de s'en passer, en fait.

  10. #10
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    12 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 12 320
    Points : 20 851
    Points
    20 851
    Par défaut
    Faisable, oui. Un appel de rassemblement des bugs, oui aussi. Et c'est en général contre la volonté de Java.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  11. #11
    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 015
    Points
    23 015
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Faisable, oui. Un appel de rassemblement des bugs, oui aussi. Et c'est en général contre la volonté de Java.
    +1

    L'héritage multiple apporte plus de problème qu'il n'en résout.
    De plus cela va à l'encontre de la philosophie de Java où les méthodes d'instances sont "virtuelles" par défaut (c'est à dire qu'elle peuvent être redéfinies dans une sous-classes).

    L'héritage multiple apporterait tellement de problème de ce coté là qu'on finirait par déclarer toutes nos méthodes final pour éviter les soucis... mais en "pourrissant" l'API.

    Surtout que les méthodes par défaut permettront de prendre la majorité des avantages de l'héritage multiple... sans les principaux problèmes !





    Sinon petite remarque : comme pour une classe, l'ajout d'une méthode par défaut dans une interface n'est pas forcément sans risque, et cela peut des incompatibilités dans certains cas de conflits de noms (incompatibilités des sources la plupart du temps).



    a++

  12. #12
    Membre averti
    Homme Profil pro
    Inscrit en
    juillet 2012
    Messages
    200
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations forums :
    Inscription : juillet 2012
    Messages : 200
    Points : 342
    Points
    342
    Par défaut
    Super tutoriel. Merçi de l'avoir publié. Cette nouvelle foncctionnalité va grandement me faciliter ma vie lors du développement d'applications Java et réduire le nombre de Copier/Coller. Oui, j'avoue qu'il m'est arrivé d'y recourir.

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    février 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : février 2013
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bon je vous previens je suis loin d'etre un expert en Java
    Mais voila quelque chose m'intrigue :est ce que permettre les implementations des methodes dans les interfaces afin d'avoir des methodes par defauts ne reviendrait pas au meme que de creer tout simplement des classes abstraites?
    Ou alors l'interet viendrait du fait que l'heritage multiple n'existe pas en java et donc l'utilisation des interfaces permettrait de contourner ce probleme
    Parce que sinon moi je vois pas trop de differences entre une interface avec des methodes par defauts et une classe abstraites

    Vous pouvez m'eclairer sur ce sujet svp?

  14. #14
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    12 320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 12 320
    Points : 20 851
    Points
    20 851
    Par défaut
    Une classe abstraite a des variables membres, et ses méthodes peuvent donc les regarder et les modifier. Une interface n'en a pas et ne peut donc pas toucher à ces trucs qui n'existent pas. C'est à peu près tout.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  15. #15
    Membre éprouvé
    Profil pro
    Inscrit en
    novembre 2009
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : novembre 2009
    Messages : 491
    Points : 1 139
    Points
    1 139
    Par défaut
    Citation Envoyé par adiGuba Voir le message
    +1
    L'héritage multiple apporte plus de problème qu'il n'en résout.
    L'héritage multiple est possible sans problème en Eiffel.

  16. #16
    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 015
    Points
    23 015
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par frfancha Voir le message
    L'héritage multiple est possible sans problème en Eiffel.
    L'héritage multiple est possible en Eiffel, mais pas sans problème !
    Il y a juste un mécanisme de renommage de méthode qui doit être utiliser en cas de conflit...



    a++

Discussions similaires

  1. Avis sur les interfaces graphiques Java
    Par mybittorent dans le forum Interfaces Graphiques en Java
    Réponses: 13
    Dernier message: 17/12/2013, 00h28
  2. Réponses: 5
    Dernier message: 26/03/2011, 19h29
  3. Livre sur les interfaces graphiques en java.
    Par zulot dans le forum Interfaces Graphiques en Java
    Réponses: 9
    Dernier message: 22/11/2007, 02h10

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