C#の - インターフェースと抽象クラスの違いは?

で再現  https://www.cnblogs.com/jian1125/p/10530125.html

 

まず、インターフェース

インタフェースは、参照型は、それらが特定の操作をサポートすることを保証するために、達成するための契約、インターフェイスの他の種類の定義を指します。メンバーは、クラスが提供するインターフェイスを指定したり、そのほかのインタフェースを実装する必要があります。クラスと同様、インターフェイスがメンバーとしてメソッド、プロパティ、イベント、およびインデクサを含むことができます。

1、インターフェースの存在を意味する多型を達成することです。


図2に示すように、インターフェースはメソッド(プロパティ、イベント、インデックス)を含むことができます。


図3は、インターフェースのメンバーは、任意の実装を持つことができません。


図4に示すように、インスタンス化できないインタフェースと静的クラスは、抽象クラスをインスタンス化することができません


5、インターフェイスのメンバーは(デフォルトはpublic)のアクセス修飾子を持つことはできません。


図6に示すように、インターフェイスを実装するサブクラスはインターフェイスのすべてのメンバー関数を実装する必要があります。


図7に示すように、方法インタフェースサブクラスを実装した場合に、任意のキーワードなしで、直接実装することができます。(抽象クラ​​ス、仮想メソッドのオーバーライドを追加する必要があります)

第二に、抽象クラス

抽象クラス、オブジェクト指向方法で、オブジェクトのすべてのクラスが順番に示されている、クラスオブジェクトは、特定の描かれた不十分なデータ、そのようなクラスは、抽象クラスであります

1、抽象メソッドは、抽象クラス、抽象クラスで起こり得るが、通常の方法を含んでもよいです。

2、親クラスで定義された抽象メソッドを実現することができません。

図3に示すように、抽象クラスをインスタンス化することができない(すなわち、それは新しいものではありません)。

4、抽象クラスと抽象メソッドは抽象キーワードを追加する必要があります。

5、サブクラスは親クラスの抽象メソッドを実装して、あなたは、overrideキーワードを追加する必要があります。

すべての抽象メソッド抽象クラスのサブクラスは抽象クラスではない場合6、サブクラスは親クラス抽象クラスをオーバーライドする必要があります。

 

第三に、抽象クラスとインタフェースの違い

 

同じポイント

  図1は、インスタンス化できません。

  2.メソッドの宣言は、未実現含まれてい

  3.派生クラスが実装する方法が実装されていない必要があり、抽象クラスが抽象メソッドであり、インターフェイスは(だけでなく、この方法は、他のメンバーを含む)すべてのメンバーであります

 

異なる点

 

  1.インターフェイスは多重継承をすることができ、抽象クラスは多重継承を実装することはできません。

  インタフェースは抽象ルールを定義することができます2.、抽象クラスはまた、メンバーが達成している提供する抽象ルールを定義することはできません

  3.インタフェース仕様行動の集合であり、抽象クラスが不完全なクラスである、それはグループの概念に焦点を当てて

  4.インタフェースがコールバックをサポートして継承がサポートされていないため、コールバック抽象クラスは、達成することができません。

  インタフェースは、メソッド、プロパティ、インデクサ、イベントの署名を含むが、抽象クラス、プロパティ、フィールドを定義達成含むフィールドおよびメソッドを定義することができない、実行される方法であって

  前記インターフェースは、値と基準タイプに適用することができる、抽象クラスのみ参照型に作用する(例えば:構造体インタフェースが継承することができます)

  7.抽象クラスは、主に近いオブジェクトを使用する必要があり、インターフェイスは、クラスとは無関係の共通の機能を提供するように適合されます

  8.-Doができます関係のインターフェイスタイプ、IS-関係上、抽象クラス型の重点に焦点を当てます。

  9.マルチインタフェースは、オブジェクトの挙動を定義する、複数の抽象クラスは、オブジェクトのプロパティを定義します。

  あなたは小さな、簡潔な機能ブロックを設計したい場合は、機能ユニットが大型に設計される場合は10、インタフェースは、抽象クラスの使用を使用しています

  指向プログラミングインターフェイス:11.インタフェースは、オブジェクト指向プログラミングのアイデアの重要な原則に対応します

 

まず、インターフェース

インタフェースは、参照型は、それらが特定の操作をサポートすることを保証するために、達成するための契約、インターフェイスの他の種類の定義を指します。メンバーは、クラスが提供するインターフェイスを指定したり、そのほかのインタフェースを実装する必要があります。クラスと同様、インターフェイスがメンバーとしてメソッド、プロパティ、イベント、およびインデクサを含むことができます。

1、インターフェースの存在を意味する多型を達成することです。


図2に示すように、インターフェースはメソッド(プロパティ、イベント、インデックス)を含むことができます。


図3は、インターフェースのメンバーは、任意の実装を持つことができません。


図4に示すように、インスタンス化できないインタフェースと静的クラスは、抽象クラスをインスタンス化することができません


5、インターフェイスのメンバーは(デフォルトはpublic)のアクセス修飾子を持つことはできません。


図6に示すように、インターフェイスを実装するサブクラスはインターフェイスのすべてのメンバー関数を実装する必要があります。


図7に示すように、方法インタフェースサブクラスを実装した場合に、任意のキーワードなしで、直接実装することができます。(抽象クラ​​ス、仮想メソッドのオーバーライドを追加する必要があります)

第二に、抽象クラス

抽象クラス、オブジェクト指向方法で、オブジェクトのすべてのクラスが順番に示されている、クラスオブジェクトは、特定の描かれた不十分なデータ、そのようなクラスは、抽象クラスであります

1、抽象メソッドは、抽象クラス、抽象クラスで起こり得るが、通常の方法を含んでもよいです。

2、親クラスで定義された抽象メソッドを実現することができません。

図3に示すように、抽象クラスをインスタンス化することができない(すなわち、それは新しいものではありません)。

4、抽象クラスと抽象メソッドは抽象キーワードを追加する必要があります。

5、サブクラスは親クラスの抽象メソッドを実装して、あなたは、overrideキーワードを追加する必要があります。

すべての抽象メソッド抽象クラスのサブクラスは抽象クラスではない場合6、サブクラスは親クラス抽象クラスをオーバーライドする必要があります。

 

第三に、抽象クラスとインタフェースの違い

 

同じポイント

  図1は、インスタンス化できません。

  2.メソッドの宣言は、未実現含まれてい

  3.派生クラスが実装する方法が実装されていない必要があり、抽象クラスが抽象メソッドであり、インターフェイスは(だけでなく、この方法は、他のメンバーを含む)すべてのメンバーであります

 

異なる点

 

  1.インターフェイスは多重継承をすることができ、抽象クラスは多重継承を実装することはできません。

  インタフェースは抽象ルールを定義することができます2.、抽象クラスはまた、メンバーが達成している提供する抽象ルールを定義することはできません

  3.インタフェース仕様行動の集合であり、抽象クラスが不完全なクラスである、それはグループの概念に焦点を当てて

  4.インタフェースがコールバックをサポートして継承がサポートされていないため、コールバック抽象クラスは、達成することができません。

  インタフェースは、メソッド、プロパティ、インデクサ、イベントの署名を含むが、抽象クラス、プロパティ、フィールドを定義達成含むフィールドおよびメソッドを定義することができない、実行される方法であって

  前記インターフェースは、値と基準タイプに適用することができる、抽象クラスのみ参照型に作用する(例えば:構造体インタフェースが継承することができます)

  7.抽象クラスは、主に近いオブジェクトを使用する必要があり、インターフェイスは、クラスとは無関係の共通の機能を提供するように適合されます

  8.-Doができます関係のインターフェイスタイプ、IS-関係上、抽象クラス型の重点に焦点を当てます。

  9.マルチインタフェースは、オブジェクトの挙動を定義する、複数の抽象クラスは、オブジェクトのプロパティを定義します。

  あなたは小さな、簡潔な機能ブロックを設計したい場合は、機能ユニットが大型に設計される場合は10、インタフェースは、抽象クラスの使用を使用しています

  指向プログラミングインターフェイス:11.インタフェースは、オブジェクト指向プログラミングのアイデアの重要な原則に対応します

おすすめ

転載: www.cnblogs.com/frank0812/p/11281648.html