2009-04-30 6 views
43

は:{}1つのインターフェイスが別のインターフェイスから「継承」するときに、それを何と呼びますか?私は クラスBがある場合

を私は "クラスB クラスAを継承" または "クラスBがクラスAから派生" と言います。私が代わりに持っている場合

しかし、: - 適切な用語は、 "B ISomeInterfaceを実装して" と言うことです

class B : ISomeInterface {} 

それは "BはISomeInterfaceを継承する" と言うのは間違いです。

しかし、私は今

interface ISomeInterface : ISomeOtherInterface {} 

を持っていると言うが、それは「継承」と言うにはまだ間違っているのですが、ISomeInterfaceは何も実装していないので、それは「実装」と言うようになりました同じように間違っているのです。

あなたはその関係を何と呼んでいますか?

+2

お好きなところをお選びください:http://thesaurus.reference.com/search?q=extend私は個人的のような「ISomeInterfaceのaggrandizes ISomeOtherInterface ":-) – nickf

+0

これで、あなたが求めていることを行うことができます:interface ISomeInterface:ISomeOtherInterface?私はまだタイムワープに悩まされているのだろうかと疑問に思います。 – joedotnot

答えて

57

私は個人的には、「拡張」と言うと、私はは(私は残念ながら、今それを見つけることができません) C#の仕様はどこにもその単語を使用して思った - が、私は彼がそれに熱心ではなかったと言ってエリックリペットを覚えています4.0用に変更したいと考えました。

元のインターフェイスで指定された契約を延長していることが示されているので、これは良いことだと思います。

EDIT:セクション13.2で問題をサイドステップのスペックの並べ替え... 3.0仕様で

を見ました。基本インターフェースから継承されているメンバーについて説明します。それは、別の延在約クラスはなく、インターフェース

EDITを話し:それは継承を使用してC#5仕様、セクション13.1.4では:

インタフェースは、ゼロ以上のインタフェースタイプから継承することができ

これは恐らく使用するのに最適な用語です。

+1

インターフェイスの実装を定義する意味を実装しています。 。インタフェースは実装されていないため、ここでは不可能です。しかし、インタフェースは別のインタフェースを拡張することができます。つまり、メソッドを追加したり、その型を継承することができます。 拡張子は+1 –

+0

VB.Netは「継承」キーワードを使用します。おそらく、C#で同じコードを記述するときに「継承」を使用するのが適切でしょう。 –

+3

@BryanRayner:継承を使用するC#5仕様の適切なビットが見つかりました。 –

7

私はこれを「拡張」と呼びます。

1

あなたは定義が間違っています。

B:Aは "BがAから継承する"という意味です。

"BはInterfaceA"を実装すると、通常InterfaceAは機能する定義がないことを意味します。プロトタイプ(またはC++のPURE)のみです。しかし、C++やほとんどのOOPLでは、継承と実装が同じ構文を共有します。

したがって、InterfaceB:InterfaceAは、「InterfaceBはInterfaceAを継承します」ということを意味します。

2

InterfaceBがInterfaceAを「継承する」、または「InterfaceAから派生する」と言うのはなぜ間違いでしょうか? InterfaceBは実装を提供していないので、 "Implements"は間違っています。意味的には、インタフェースの導出はクラスの導出に非常に似ています。 たとえば、C++ではインターフェイスとクラスを区別しません。

7

通常、私はそれを強く呼びます。

+3

INewerVersionはIOlderVersionを拡張します。 COldClassはIOlderVersionを実装しますが、INewerVersionは実装しません。 CNewClassはINewerVersionを実装します。強化策はどこですか? –

+2

@Windowsプログラマー:これは良い例外です。したがって、**通常は**強化されています。まず第一に、これはやや舌であった。第2に、インターフェースを継承している場合は、少なくとも3つの継承レベルがあります。これは、誰かがそのインターフェースも実装するためです。それはそこに起き始めている。 – dsimcha

+0

したがって、 "Interface Segregation Principle"に敬意を表する "SOLID"コードを書こうとすると、読み書き両方のストリームが2つの別々のインターフェイスを実装することなく、IStreamはIReadableStreamとIWriteableStreamの組み合わせを拡張する必要がありますか?それとも、「工学上」ですか?時には、良いプログラミングプロジェクトが良い航空機着陸のようなものだと思っていることもあります。 – Shavais

6

信頼できるソース、あなたが参考に引用符を必要とする場合のように、私はコンボボックスコントロール、リストボックスやテキストボックスのためのインタフェースの継承構造の実用的な例と「インターフェイスの継承」を記述しているinfo on MSDNに出くわしました:

と明示ベースインタフェースの言及

とのインターフェースは、ゼロ以上のインターフェース、継承でき は、明示的な基本インターフェイスをインターフェイスと呼びます。

例:

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

出典:

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

関連する問題