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

Java Discussion :

Utilité des classes abstraites en java 8


Sujet :

Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 176
    Par défaut Utilité des classes abstraites en java 8
    Bonjour tout le monde,

    Je n'avais pas encore trop regardé les nouveautés de java 8 et je viens de découvrir qu'il est maintenant possible d'implémenter certaines méthodes dans les interfaces.
    Ceci afin de capitaliser des méthodes. Pourtant pour réaliser ceci il y avait déjà la possibilité d'utiliser les classes abstraites.
    C'est pour cette raison qu'avec ce nouveau mécanisme, il me semble que l'utilité des classes abstraites disparaît.
    Qu'en pensez-vous?

    Bonne soirée,

    Pierre.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Même si une interface peut maintenant implémenter des méthodes, ces méthodes ne peuvent s'appuyer que sur le contrat que l'interface définit comme elle le faisait déjà avant. Une classe abstraite, étant une classe, n'a pas cette contrainte.

    Autrement dit, une classe abstraite peut avoir des variables qui lui donnent un état interne. Une interface ne le peut pas. Dans le même genre, elle ne peut toujours pas avoir de constructeur non plus.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Anubis Voir le message
    Pourtant pour réaliser ceci il y avait déjà la possibilité d'utiliser les classes abstraites.
    L'objectif premier des méthodes par défaut n'est pas forcément d'implémenter une méthode, mais de permettre l'évolution des interfaces.

    En effet jusqu'à présent il n'était pas possible de rajouter une méthode dans une interface sans "casser" potentiellement le code de toutes les classes qui implémentent cette interface.
    Le problème c'est que du coup il était impossible d'enrichir les interfaces standards !

    Désormais on peut rajouter des méthodes sans forcément tout casser.

    Les interfaces Iterable, Collection, List, Map se sont donc enrichi de nouvelles méthodes.


    Citation Envoyé par Anubis Voir le message
    C'est pour cette raison qu'avec ce nouveau mécanisme, il me semble que l'utilité des classes abstraites disparaît.
    Pas tout à fait.
    Certaines utilisations des classes abstraites peuvent en effet être remplacées par des méthodes par défaut.

    Toutefois comme le précise thelvin, les méthodes par défaut ne peuvent se baser que sur le contrat de l'interface, et elles ne peuvent pas gérer d'état interne, définir des contraintes de construction, ni définir des méthodes à visibilité réduite.

    a++

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 176
    Par défaut
    Je n'avais pas envisagé tous les aspects de la classe abstraite.
    En résumé, la possibilité d'implémenter des méthodes dans une interface permet de faire évoluer les interfaces sans remettre en cause les sous-interface et de capitaliser des implémentations de méthode.
    Il n'est toutefois pas encore possible de de définir d'attribut de classe et de constructeur dans les interfaces contrairement aux classes abstraites.

    Merci pour vos retours.

    Bonne journée,

    Pierre.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. L'utilité des classes statiques
    Par Blowdi dans le forum Débuter
    Réponses: 6
    Dernier message: 08/06/2009, 12h13
  2. [classe abstraite] gestion des classes abstraites en memoire
    Par noOneIsInnocent dans le forum Langage
    Réponses: 2
    Dernier message: 10/12/2007, 11h53
  3. De l'utilité des classes ?
    Par oranocha dans le forum Langage
    Réponses: 17
    Dernier message: 04/05/2007, 17h41
  4. A propos des classes abstraites
    Par OhLiberty dans le forum C++
    Réponses: 5
    Dernier message: 15/09/2006, 19h11
  5. [POO] [AVIS] L'utilité des classes
    Par Anduriel dans le forum Langage
    Réponses: 66
    Dernier message: 10/11/2005, 16h45

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