「C Sharpの基礎 - インターフェイス」の版間の差分

ナビゲーションに移動 検索に移動
510行目: 510行目:
* as判定用に、interface IX { object X { get; } }
* as判定用に、interface IX { object X { get; } }
* 手動で使用するためにジェネリックも記述して、interface IX<T> : IX { new T X { get; } }
* 手動で使用するためにジェネリックも記述して、interface IX<T> : IX { new T X { get; } }
<br><br>
== インターフェイスの標準実装 ==
C# 8.0(.NET Core 3.0)では、以下に示すように、インターフェイスの制限が緩和された。<br>
* メソッド、プロパティ、インデクサ、イベントのアクセサの実装を持つことができる。
* アクセシビリティを明示的に指定できる。
* 静的メンバを持つことができる。(入れ子の型も含む)
<br>
機能面では、クラス(特に、抽象クラス)との差は、<u>フィールドを持つことができない代わりに多重継承できる</u>程度である。<br>
フィールドは、多重継承(特に、ひし形継承)との相性が悪くメリットが少ないため、これ以上の制限は緩和されない。<br>
<br>
以下に、クラスと異なる部分を示す。<br>
* アクセシビリティ未指定の場合等、既定の挙動が異なる。
* 派生インターフェイスでのオーバーライドは明示的実装が必須。
* 標準実装を持つメンバは、派生クラスまたは派生インターフェイスから直接呼べない。(親へのキャストが必要)
<br><br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:C_Sharp]]
[[カテゴリ:C_Sharp]]

案内メニュー