Comment l’appelle-t-on lorsqu’une interface «hérite» d’une autre?

Si j’ai la classe B: A {}

Je dis que “la classe A héritée de la classe A” ou “la classe B dérive de la classe A”.

Cependant, si j’ai plutôt:

class B : ISomeInterface {} 

il est faux de dire “B hérite de ISomeInterface” – le terme propre est à dire “B implémente ISomeInterface”.

Mais dis que j’ai

  interface ISomeInterface : ISomeOtherInterface {} 

Maintenant, il est toujours faux de dire “hérite”, mais il est maintenant tout aussi faux de dire “implémente” puisque ISomeInterface n’implémente rien.

Alors, comment appelez-vous cette relation?

Personnellement, je dis “étend” et je pensais que la spécification C # utilisait aussi ce mot quelque part (malheureusement, je ne le trouve pas maintenant) – mais je me souviens qu’Eric Lippert disait qu’il n’aimait pas ça et voulait le changer pour 4.0.

Je pense que c’est bien, car cela montre que vous prolongez le contrat spécifié par l’interface d’origine.

EDIT: Après avoir regardé la spécification 3.0 …

La spécification des étapes latérales le problème dans la section 13.2. Il parle des membres hérités des interfaces de base. Il parle d’une classe étendant une autre, mais pas des interfaces

EDIT: Dans la spécification C # 5, section 13.1.4, il utilise:

Une interface peut hériter de zéro ou plusieurs types d’interface

C’est probablement le meilleur terme à utiliser.

Je l’appelle “étend”.

Habituellement, je l’appelle surengineering.

En tant que source faisant autorité et au cas où vous auriez besoin d’une citation utile, je suis tombé sur des informations sur MSDN décrivant “l’ inheritance d’interface ” avec un exemple pratique de la structure d’inheritance d’interface pour ComboBox, Control, Listbox et TextBox:

Et avec mention d’une interface de base explicite

Une interface peut hériter de zéro ou plusieurs interfaces , appelées interfaces de base explicites de l’interface.

Exemple:

 interface IControl { void Paint(); } interface ITextBox: IControl { void SetText(ssortingng text); } interface IListBox: IControl { void SetItems(ssortingng[] items); } interface IComboBox: ITextBox, IListBox {} 

La source:

http://msdn.microsoft.com/en-us/library/aa664578%28VS.71%29.aspx

Pourquoi serait-il faux de dire que InterfaceB “hérite” ou “dérive de” InterfaceA? “Implements” serait faux, car InterfaceB ne fournit pas d’implémentation. Sémantiquement, la dérivation des interfaces est très similaire à la dérivation des classes. C ++, par exemple, ne fait aucune distinction entre les interfaces et les classes.

vous avez la définition erronée.

B: A signifie “B hérite de A”.

quand on dit “B implémente InterfaceA”, cela signifie généralement que InterfaceA n’a pas la définition pour fonctionner – ce ne sont que des prototypes (ou PURE en C ++). Cependant, en C ++ et dans la plupart des OOPL, la structure et les implémentations partagent la même syntaxe.

Donc, InterfaceB: InterfaceA signifie toujours “InterfaceB hérite de InterfaceA”.