私はインターフェイスの継承がどのように機能するかを理解しようとしています。インターフェイスが別のインターフェイスを継承するが、同じシグネチャを持つメソッドを持つ場合、コンパイラはベースメンバが隠されていることを警告します(これは論理的です)。インターフェイスの継承 - 親インターフェイスからのメソッドの隠蔽 - なぜ実装クラスに両方のメソッドを持たせることができますか?
しかし、後でクラスで子インターフェイスを実装すると、同じシグネチャを持つ親インターフェイスと子インターフェイスの両方のメソッドを実装する必要があり、これが混乱します...親メンバーが非表示になっていると子インタフェースメソッドのみを実装する必要がありますか?
(IEnumerable
とIEnumerable<T>
インターフェースを見ながら、私はこの時に来た)
interface IMyBase
{
int DoSomething();
}
interface IMyDerived:IMyBase
{
int DoSomething();
}
class myClass : IMyDerived
{
int IMyDerived.DoSomething()
{
throw new NotImplementedException();
}
int IMyBase.DoSomething()
{
throw new NotImplementedException();
}
}
明示的にインターフェイスを実装しています。その場合、継承はテーブルから外れています。 – CodeCaster
インターフェイスのメンバーを非表示にすることはできません。クラスはありません –
'IMyDerived'に' DoSomething() 'を入れないでください。既に' IMyBase'から継承しています。このインターフェイスに配置すると、ゼロ値が追加されます。私は実際にはコンパイラがこれについて不平を言って驚いていますか?私は少なくとも警告を期待するだろう。 – Liam