1. ホーム
  2. c#

[解決済み] インターフェースと抽象クラス [重複]の比較

2022-05-18 06:14:20

質問

C#では、どのような場合にインターフェースを使い、どのような場合に抽象クラスを使うべきなのでしょうか。 何が決め手になるのでしょうか?

どのように解決するのか?

更新: C# 8.0 の新機能。 C# 8.0から、インターフェースはプロパティを含むメンバのデフォルト実装を定義することができます。インターフェイスではインスタンスデータフィールドを定義できないため、インターフェイスでプロパティのデフォルト実装を定義することは稀です。

抽象クラスの利点は

  • メソッドのデフォルト実装を指定することができる
  • 関数に不変性チェックを追加
  • インターフェイスのメソッドを呼び出す方法を少し制御できるようになりました。
  • インターフェイスに関連する、または関連しない動作を "free".で提供する能力。

インターフェースは単なるデータの受け渡し契約であり、これらの機能はありません。しかし、一つの型は一つのクラスからしか派生できませんが、インターフェースはいくつでも実装できるため、一般的に柔軟性があります。