C# では、いつインターフェースを使用し、いつ抽象クラスを使用すればよいのでしょうか? 決定要因は何でしょうか?
ベストアンサー1
更新: C# 8.0 の新機能:C# 8.0 以降では、インターフェイスはプロパティを含むメンバーの既定の実装を定義できます。インターフェイスではインスタンス データ フィールドが定義されない場合があるため、インターフェイスでプロパティの既定の実装を定義することはまれです。
抽象クラスの利点は次のとおりです。
- メソッドのデフォルト実装を指定する機能
- 関数に不変チェックを追加
- 「インターフェース」メソッドの呼び出し方法をもう少し制御できます
- インターフェースに関連する、または関連しない動作を「無料で」提供する機能
インターフェースは単なるデータ受け渡し契約であり、これらの機能はありません。ただし、型は 1 つのクラスからのみ派生できますが、任意の数のインターフェースを実装できるため、通常はより柔軟です。