OVH Cloud OVH Cloud

Réimplémentation d'une interface

14 réponses
Avatar
ShadowFil
Bonjour,

Question 1 :
Une classe qui hérite d'une implémentation d'interface peut réimplémenter
l'interface en l'incluant dans sa liste de classes de base.

Quel est l'intérêt de réimplémenter une interface ?

Question 2 :
Dans du code, on voit parfois une classe qui, dans sa déclaration, hérite
d'une classe de base et d'une interface, et que cette interface est déjà
implémentée par la classe de base. Mais pourtant, les méthodes de l'interface
ne sont pas réimplémenté dans la classe dérivée. Quel est l'intérêt dans ce
cas d'fériter à nouveau de l'interface ?

Par exemple :
interface IMyInterface
{ ... }

public class MyClassBase : IMyInterface
{ ... }

public class MyClassDerived : MyClassBase, IMyInterface
{ ... }


Merci pour votre aide.

4 réponses

1 2
Avatar
Zazar
Bonjour,


Question 1 :
Une classe qui hérite d'une implémentation d'interface peut r éimplémenter
l'interface en l'incluant dans sa liste de classes de base.

Quel est l'intérêt de réimplémenter une interface ?



Dans le cas où on hérite d'une classe qui implémente expli citement une
interface, si on veut modifier l'implémentation, on n'a pas d'autre
choix que de réimplémenter l'interface.

Question 2 :
Dans du code, on voit parfois une classe qui, dans sa déclaration, hérite
d'une classe de base et d'une interface, et que cette interface est dà ©jà
implémentée par la classe de base. Mais pourtant, les mé thodes de l'interface
ne sont pas réimplémenté dans la classe dérivé e. Quel est l'intérêt dans ce
cas d'fériter à nouveau de l'interface ?



Je n'en ai pas la moindre idée, vous avez vu ce genre de code quelqu e part ?

--
Zazar
Avatar
Zazar
Bonjour,

Q2:
ça n'a pas grand intêret, sauf éventuellement pour des outils où des
programmes qui seraient basés sur des mécanismes d'introspection
(=reflexion) et qui s'arrêteraient au niveau d'une classe sans scru ter les
classes de base



Si une classe implémente une interface, alors si on fait de
l'introspection des classes filles, on peut savoir qu'elles implémenten t
l'interface elles aussi sans avoir besoin de remonter à la classe de ba se.

--
Zazar
Avatar
Zazar
> Donc, je pense que c'est plus propre d'hériter qu'une seule fois d 'une même
interface dans toute une lignée d'héritage. Car si on cré e un diagramme de
classes UML avec plusieurs classes d'une même lignée d'hé ritage qui pointent
vers la même interface, c'est assez moche.


Si vous faîtes un diagramme de classes, vous n'avez pas besoin de
faire pointer la classe réimplémentant l'interface vers l'inter face. Il
s'agit d'une réimplémentation (comme un overrides), pas d'un no uvel
héritage.

--
Zazar
Avatar
Zazar
> Peut-être que cette possibilité supplémentaire de ré implémentation
d'interface n'existe que pour des languages autre que C#, comme VB, qui ne
permettent pas le polymorphisme ?




En VB, la réimplémentation est interdite :) . Mais avec le fram ework
2.0, ça va devenir possible.

--
Zazar
1 2