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 :

entre la classe abstraite et l'interface


Sujet :

avec Java

  1. #1
    Membre du Club
    Homme Profil pro
    12
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Points : 61
    Points
    61
    Par défaut entre la classe abstraite et l'interface
    bonsoir à tous!

    j'aimerais savoir la différence qui existe entre l'interface et la classe abstraite dans une modélisation d'un exercice ? autrement dit: comment puis je choisir entre une classe abstraite ou bien une interface pour modéliser une entité ?

  2. #2
    Membre chevronné
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Points : 1 993
    Points
    1 993
    Par défaut
    L'interface n'est que la définition de méthodes que les classe l'implémentant devront redéfinir

    La classe abstraite, c'est une classe que tu ne peux pas instancier, qui définit à la fois des méthodes abstraites (sans code) et des méthodes implémentées. Il existe des classes abstraites qui ne possèdent que des méthodes abstraites : c'est possible, mais c'est une connerie dans le sens où l'utilisation d'une interface provoque le même résultat mais offre plus de souplesse (vu qu'on ne peut hériter que d'une classe mais implémenter plusieurs interfaces)


    Au niveau de la modélisation, une technique pour savoir si tu dois faire une interface ou une classe abstraite est de se poser une question : est-ce que je déclare un fonctionnement ou un comportement?

    Exemple : tu veux modéliser une porte. Veux tu modéliser la porte (possède des charnières, une poignée, une couleur, une serrure), ou son comportement (on peut l'ouvrir, la fermer, tourner la poignée, mettre une clé)
    Dans le premier cas, tu fais une classe abstraite, dans le deuxième tu fais DES interfaces (parce que y'a pas que les portes qui sont ouvraABLE ou fermABLE...)

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Un interface représente un contrat.
    Une classe abstrait représente, une ébauche de classe, une ossature avec un comportement de base.

    Les interfaces sont à utiliser quand tu ne veux pas coupler ce qui utilise ton interface et ce qui l'implémente.

    Un cas typique est la déclaration des listes en Java.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<String> mesCodes = new AbstractList<String>();
    Il faut savoir que ArrayList hérite directement de AbstractList qui implémente l'interface List.
    L'utilité de la classe abstraite AbstractList, c'est que son comportement de base peut-être réutilisé pour d'autre implémentation (ce qui est le ça avec la classe Vector).

    Donc, les classes abstraits sont à utiliser lorsque tu veux isoler un comportement, malgré le fait que celui-ci n'est pas suffisant pour être utilisable.

    D'ailleurs si tu regarde le code source de cette classe tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        public boolean add(E e) {
            add(size(), e);
            return true;
        }
     
        public void add(int index, E element) {
            throw new UnsupportedOperationException();
        }
    Cela évite d'avoir à redéfinir des évidences pour les réels implémentations qui n'auront plus qu'à faire ce qui leur est particulier.

    Si tu fait un classe abstraite c'est qu'à un moment donnée tu compte faire deux classes enfants se basant sur ce comportement.

    Cordialement,
    Patrick Kolodziejczyk.

    source :
    https://docs.oracle.com/javase/7/doc...tractList.html
    https://docs.oracle.com/javase/7/doc...ArrayList.html
    (pour les sources, celles-ci sont présent dans le src.zip de l'installe d'un JDK)

  4. #4
    Membre du Club
    Homme Profil pro
    12
    Inscrit en
    Mai 2014
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Loire Atlantique (Pays de la Loire)

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

    Informations forums :
    Inscription : Mai 2014
    Messages : 67
    Points : 61
    Points
    61
    Par défaut
    D'accord, merci à vous tous

Discussions similaires

  1. différence entre interface et classe abstraite
    Par yacin87 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 29/03/2010, 12h36
  2. L'intérêt des classes abstraites face au interfaces
    Par diopahmadou dans le forum Langage
    Réponses: 2
    Dernier message: 07/12/2009, 11h43
  3. Difference entre Class Abstraite et interface
    Par menzlitsh dans le forum Langage
    Réponses: 11
    Dernier message: 05/07/2007, 14h04
  4. [POO] Différence entre Interface et classe Abstraite
    Par viviboss dans le forum Langage
    Réponses: 7
    Dernier message: 29/11/2006, 17h39
  5. [Debutant][Conception] Classes abstraites et interface.
    Par SirDarken dans le forum Langage
    Réponses: 4
    Dernier message: 29/10/2004, 01h02

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