接口继承 - 从父接口隐藏方法 - 为什么我可以在实现类中同时使用这两种方法?
问题描述:
我想了解接口的继承是如何工作的。当一个接口继承另一个接口但具有相同签名的方法时,编译器会发出一个警告,提醒基础成员是隐藏的(这看起来很合理)。但是,当我稍后在一个类中实现子接口时,我必须实现具有相同签名的父接口方法和子接口方法,这使我感到困惑......我认为,当父成员隐藏时,只需要实现子接口方法?接口继承 - 从父接口隐藏方法 - 为什么我可以在实现类中同时使用这两种方法?
(我来到这一边看着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();
}
}
答
我要实现这两个家长和具有相同签名子接口方法,这让我困惑
那么如果你这样做,你期望会发生什么?
IMyBase x = new myClass();
x.DoSomething();
有两种方法,IMyBase.Something
和IMyDerived.Something
,都有存在,因为两者都可以调用。 myClass
仍然实现IMyBase
,接口没有以任何方式隐藏。
你明确地实现了接口。在这种情况下,继承不在桌面上。 – CodeCaster
接口成员不能隐藏,没有类 –
只是不要把'DoSomething()'放在'IMyDerived'中,它已经从'IMyBase'继承了它。把它放在这个界面中会增加零值。我真的很惊讶编译器不会抱怨这个?我希望至少有一个警告。 – Liam