Interface ou classe abstraite?

cs_Kite37 243 Messages postés lundi 6 mars 2006Date d'inscription 17 janvier 2018 Dernière intervention - 23 avril 2009 à 23:38 - Dernière réponse : cs_Kite37 243 Messages postés lundi 6 mars 2006Date d'inscription 17 janvier 2018 Dernière intervention
- 4 mai 2009 à 22:45
Bonjour,

Je suis en pleine migration VB.NET / C# et quelques chose m'interpelle un peu.

En effet, dans les ouvrages que j'ai (et sur de nombreuses références web) je trouve des sujets traitant d'interface et de classes abstraites.

Or, les deux fonctionnent exactement pareil, d'où ma question : quelles sont les différences entre les deux? dans quel cas utiliser les interfaces et dans quel cas les classes abstraites?

Cordialement,

KiTe.
Afficher la suite 

6 réponses

Répondre au sujet
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 24 avril 2009 à 09:22
0
Utile
Bonjour,

Rien ne sert d'essayer quelque chose qui est déjà très bien expliquée :
http://www.clever-age.com/veille/blog/quelle-difference-entre-une-classe-abstraite-et-une-interface.html

Codes-Sources:
Abstract: http://www.csharpfr.com/codes/CLASSE-ABSTRAITE_11485.aspx

MSDN:
Abstract: http://msdn.microsoft.com/fr-fr/library/sf985hc5(VS.80).aspx
Interface: http://msdn.microsoft.com/fr-fr/library/ms173156(VS.80).aspx

Bonne lecture et bonne journée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Commenter la réponse de billou_13
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 24 avril 2009 à 09:23
0
Utile
Désolé pour mon oubli lors de la frappe:
"Rien ne sert d'essayer quelque chose qui est déjà très bien expliquée :"
=>
"Rien ne sert d'essayer d'expliquer quelque chose qui est déjà très bien expliquée :"

Bonne journée,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Commenter la réponse de billou_13
leprov 1163 Messages postés vendredi 23 juillet 2004Date d'inscription 21 octobre 2010 Dernière intervention - 24 avril 2009 à 10:36
0
Utile
Pour résumer :
tu utilises une interface des que tu le peux.
Pas de dérivation multiple, donc si tu hérites d'une classe abstraite, tu ne pourras dériver de rien d'autre.
en revanche, une interface ne peux contenir aucune implémentation de méthode (donc pas de méthode protected dans une interface, et tu ne peux avoir que des méthodes publiques).
Sachant que ce n'est que résumé pour donner l'idée de l'interet de l'un ou l'autre dans les cas standard, je te conseille de tout de meme lire les liens de billou...(entre implémentations explicites et autres subtilités qui font que si y'a plusieurs pages de doc, cest bien parce qu'on peut pas se contenter de résumer en deux lignes)
Commenter la réponse de leprov
cs_Kite37 243 Messages postés lundi 6 mars 2006Date d'inscription 17 janvier 2018 Dernière intervention - 24 avril 2009 à 11:08
0
Utile
J'avais déjà lu les pages MSDN en fait.

Donc en gros le seul avantage des interfaces est de pouvoir faire une sorte d'héritage multiple .. mais dont on doit réécrire les méthodes. Donc quelle utilisé de se lier a une interface si il faut tout réécrire? c'est un peu inutile ...

Pour les classes abstraites pas de soucis j'ai bien compris en revanche.

Cordialement,
Commenter la réponse de cs_Kite37
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 24 avril 2009 à 11:25
0
Utile
Re,

Kite37, pour bien comprendre l'utilité des interfaces, je te renvoie à ma réponse à ce post:
http://www.csharpfr.com/forum/sujet-INTERFACES_1241388.aspx
Cela devrait t'éclairer !

Bonne lecture,

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
Commenter la réponse de billou_13
cs_Kite37 243 Messages postés lundi 6 mars 2006Date d'inscription 17 janvier 2018 Dernière intervention - 4 mai 2009 à 22:45
0
Utile
Merci bien à vous tous pour vos réponses.
En allant de lien en lien sur ceux que vous m'avez proposés, en lisant des exemples et de la doc je pense que je commence a saisir l'utilité des interfaces.

Toute leur puissance repose donc en fait sur le polymorphisme d'un part ou du fait qu'elles peuvent agir comme un "guide" pour le développement d'une classe.
C'est du moins ce que cela inspire au premier abord même si j'imagine bien les applications auxquelles peuvent servir les interfaces ^^

Cordialement,

KiTe

_________________________________________________
La connaissance est un trésor.
Commenter la réponse de cs_Kite37

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.