8
votes

Quelle est la différence entre une interface et une classe abstraite?

Dupliqué possible:
Interface VS Classe abstraite (Général OO)

Je ne suis pas clairement clair à la différence.

merci


2 commentaires

Il y a beaucoup de poteaux à ce sujet: Stackoverflow .com / questions / 761194 / ...


~ Les joies d'amande ont des noix, des monticules ne le font pas. ~ Sauf remplacer "Joites d'amande" avec des classes abstraites, des "monticules" avec des interfaces et des "noix" avec des méthodes concrètes.


3 Réponses :


17
votes

Ils sont assez similaires, mais il y a quelques différences techniques importantes:

  • Une classe abstraite vous permet de fournir une implémentation par défaut pour certaines des méthodes, mais une interface ne vous permet pas de fournir des implémentations.
  • Vous pouvez implémenter plusieurs interfaces, mais vous ne pouvez hériter que d'une classe abstraite.

    Ces différences affectent comment les deux techniques doivent être utilisées:

    • Vous devez utiliser une interface pour définir un contrat .
    • Une classe abstraite peut être utile pour code de réutilisation ... mais sachez que ce n'est pas le seul moyen de réutiliser le code. Vous devriez également envisager d'autres approches telles que le confinement.

0 commentaires

4
votes

Une interface n'autorise pas la définition de l'une des méthodes de membre, alors qu'une classe abstraite autorise tout ou partie d'être définie. Une classe ne peut toutefois que prolonger une classe (résumé ou non) mais peut implémenter autant d'interfaces qu'elle souhaite.


0 commentaires

3
votes

J'aime penser à une interface comme contrat. Toute classe qui implémente une interface doit fournir des détails sur ce qu'il faut faire lorsqu'une méthode définie dans le contrat est appelée. Une classe abstraite est une classe qui définissait un ensemble de comportements réels, c'est-à-dire plus qu'un contrat à mettre en œuvre plus tard, mais cette classe ne peut être instanciée.


0 commentaires