Come lo chiami quando un'interfaccia “eredita” da un'altra?
Domanda
Se l'ho fatto classe B: A {}
Dico che " Classe B ereditato classe A " o "la classe B deriva dalla classe A".
Tuttavia, se invece ho:
class B : ISomeInterface {}
è sbagliato dire che "B eredita ISomeInterface" - il termine corretto è dire "B implementa ISomeInterface".
Ma, dire che ho
interface ISomeInterface : ISomeOtherInterface {}
Ora, è ancora sbagliato dire "eredita", ma ora è altrettanto sbagliato dire "implementa" poiché ISomeInterface non implementa nulla.
Quindi, come si chiama quella relazione?
Soluzione
Dico personalmente " estende " e ho pensato che la specifica C # usa quella parola anche da qualche parte (non riesco a trovarla ora, sfortunatamente) - ma ricordo Eric Lippert che diceva che non gli piaceva e voleva cambiarla per 4.0.
Penso che sia buono, perché dimostra che stai estendendo il contratto specificato dall'interfaccia originale.
EDIT: dopo aver esaminato le specifiche 3.0 ...
Il tipo di specifica di side-step il problema nella sezione 13.2. Parla dei membri ereditati dalle interfacce di base. Parla di una classe che ne estende un'altra, ma non di interfacce
EDIT: nelle specifiche C # 5, sezione 13.1.4, utilizza eredita:
Un'interfaccia può ereditare da zero o più tipi di interfaccia
Quindi questo è probabilmente il termine migliore da usare.
Altri suggerimenti
Lo chiamo " estende " ;.
Di solito, lo chiamo ingegneristico.
Come fonte autorevole e nel caso abbiate bisogno di un preventivo utile, mi sono imbattuto in informazioni su MSDN che descrivono " eredità dell'interfaccia " con un esempio pratico della struttura di ereditarietà dell'interfaccia per ComboBox, Control, Listbox e TextBox:
E con menzione di un'interfaccia di base esplicita
Un'interfaccia può ereditare da zero o più interfacce , che sono chiamate interfacce di base esplicite dell'interfaccia.
Esempio:
interface IControl
{
void Paint();
}
interface ITextBox: IControl
{
void SetText(string text);
}
interface IListBox: IControl
{
void SetItems(string[] items);
}
interface IComboBox: ITextBox, IListBox {}
Fonte:
http://msdn.microsoft.com/ it-it / library / aa664578% 28VS.71% 29.aspx
Perché sarebbe sbagliato dire InterfaceB "eredita"? o "deriva da" InterfaceA? & Quot; Implementa " sarebbe sbagliato, perché InterfaceB non fornisce un'implementazione. Semanticamente, derivare interfacce è molto simile alle classi derivate. Il C ++, ad esempio, non distingue affatto tra interfacce e classi.
hai sbagliato la definizione.
B: A significa "B eredita da A".
quando diciamo che "B implementa InterfaceA", ciò significa che InterfaceA non ha la definizione per funzionare - sono solo prototipi (o, PURE in C ++). Tuttavia, in C ++ e nella maggior parte di OOPL, l'ereditarietà e l'implementazione condividono la stessa sintassi.
Quindi InterfaceB: InterfaceA significa ancora " InterfaceB eredita InterfaceA " ;.