C#では、いつインターフェースを使用し、いつ抽象クラスを使用する必要がありますか?決定要因は何ですか?
抽象クラスの利点は次のとおりです。
インターフェイスは単なるデータパッシングコントラクトであり、これらの機能はありません。ただし、タイプは1つのクラスからのみ派生できるため、通常はより柔軟ですが、任意の数のインターフェイスを実装できます。
抽象クラスとインターフェースは意味的に異なりますが、それらの使用法は重複する場合があります。
一般に、抽象クラスは、同様のクラスの構築基盤として使用されます。クラスに共通の実装は、抽象クラスにすることができます。
通常、インターフェイスは、クラスの機能を指定するために使用されます。クラスはあまり似ている必要はありません。
考慮すべきもう1つのことは、多重継承がないため、インターフェイス/抽象クラスからクラスを実装/継承し、別の基本クラスから継承できるようにする場合は、インターフェイスを使用することです。
本当の問題は、インターフェイスを使用するかベースクラスを使用するかです。これについては前に説明しました。
C#では、抽象クラス(キーワード「abstract」でマークされたクラス)は、オブジェクトをインスタンス化できないクラスです。これは、基本クラスとインターフェースを単に区別することとは異なる目的に役立ちます。