Interface ou classe abstraite?

Signaler
Messages postés
242
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2018
-
Messages postés
242
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2018
-
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.

6 réponses

Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
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
---------------------
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
22
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
---------------------
Messages postés
1160
Date d'inscription
vendredi 23 juillet 2004
Statut
Membre
Dernière intervention
21 octobre 2010
17
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)
Messages postés
242
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2018

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,
Messages postés
860
Date d'inscription
jeudi 4 mars 2004
Statut
Membre
Dernière intervention
19 août 2014
22
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
---------------------
Messages postés
242
Date d'inscription
lundi 6 mars 2006
Statut
Membre
Dernière intervention
17 janvier 2018

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.