私はこのようなものをたくさん見ます:
interface A { ... }
interface B : A { ... }
class C : B, A { ...}
B が既に A を継承しているのに、なぜ C がインターフェイス A を実装すると指定するのでしょうか? 意味的な違いはありますか、それとも単にスタイルの問題ですか?
(多くの例の 1 つは と の実装List<T>
ですが、からも派生しています)。IList<T>
ICollection<T>
IList<T>
ICollection<T>
更新:セマンティックな違いはないという私の推測を確認していただきありがとうございます。
すでに継承ツリーにあるインターフェイスに明示的に名前を付けることが違いを生む、関連する状況を思いつきました。
B
クラスの場合、' ' の後に明示的に名前が付けられている場合にC
のみ、からのインターフェイス メンバーを (再) 実装します。A
A
:
[編集] オブジェクトがインターフェイスとしてキャストされる場合にメンバーの使用を制限する、明示的に実装されたインターフェイス メンバーとの混乱を避けるために、質問の文言を変更しました。