この質問には既に回答があります:
C#では、いつインターフェイスを使用すべきですか、いつ抽象クラスを使用すべきですか?決定要因は何ですか?
抽象クラスの利点は次のとおりです。
インタフェースは単にデータ受け渡し契約に過ぎず、これらの機能はありません。しかし、型は1つのクラスからのみ派生することができますが、任意の数のインタフェースを実装することができるため、通常は柔軟性があります。
抽象クラスとインタフェースは意味的に異なるが、その使用法は重複する可能性がある。
抽象クラスは、一般的に、類似クラスの構築基礎として使用されます。クラスに共通する実装は、抽象クラスに含まれることができます。
インターフェイスは、一般的にクラスの能力を指定するために使用されます。クラスは非常に似ている必要はありません。
考慮すべきもう一つは、多重継承がないので、あるクラスがあなたのインタフェース/抽象クラスから継承/継承できるが、別の基本クラスから継承できるようにするには、インタフェースを使用することです。
実際の質問は、インタフェースやベースクラスを使用するかどうかです。これは前に説明しました。
C#では、抽象クラス(キーワード "abstract"でマークされたクラス)は単にオブジェクトをインスタンス化できないクラスです。これは、単純に基本クラスとインタフェースを区別するのとは異なる目的を果たします。