Interface ou classe abstraite?

cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018 - 23 avril 2009 à 23:38
cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018 - 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.
A voir également:

6 réponses

billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
24 avril 2009 à 09:22
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
---------------------
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
24 avril 2009 à 09:23
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
---------------------
0
leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
24 avril 2009 à 10:36
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)
0
cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018
24 avril 2009 à 11:08
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,
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
24 avril 2009 à 11:25
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
---------------------
0
cs_Kite37 Messages postés 242 Date d'inscription lundi 6 mars 2006 Statut Membre Dernière intervention 17 janvier 2018
4 mai 2009 à 22:45
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.
0
Rejoignez-nous