【发布时间】:2015-06-24 20:24:27
【问题描述】:
我在理解一些 C# 代码时遇到了问题:)
我有 2 个接口 IClassB 和 IClass,每个接口都有一个方法,无论名称和签名如何。我正在做实现它们的 ClassC 类:显式 IClassB 和隐式 IClassA。所以我有代码:
public class ClassC: IClassA, IClassB
{
void IClassB.methodForClassB()
{
Console.WriteLine("method for explicit implementation");
}
public void methodForClassA()
{
Console.WriteLine("method for implicit implementation");
}
}
如您所见:方法 void IClassB.methodForClassB() 是私有的(不是吗?)。 但是当我使用这个 ClassC 对象时,我可以调用方法 methodForClassB,因为它是一个公共方法。怎么解释?
ClassC classC = new ClassC();
IClassB classB = new ClassC();
classB.methodForClassB();*
((IClassB)classC).methodForClassB();
【问题讨论】:
-
接口的全部意义在于能够调用其方法(另请参见 Liskov 替换原则)。你不能那样做。
标签: c#