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?

È stato utile?

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 " ;.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top