我刚刚开始计算.Net中隐式和显式接口实现之间的区别。由于我来自Java背景,这个想法仍然有点令人困惑。我希望知道哪些Java会使它更明显的区别是什么。我假设Java是显式的???
答案 0 :(得分:5)
Nope Java是隐含的。显式是您实现多个具有相同方法签名的接口的位置,并且显式表明实现所针对的接口。
来自MSDN的一个例子:
public class SampleClass : IControl, ISurface
{
void IControl.Paint()
{
System.Console.WriteLine("IControl.Paint");
}
void ISurface.Paint()
{
System.Console.WriteLine("ISurface.Paint");
}
}
这里我们有两个Paint()
方法,每个接口一个。在Java中,您只能有一个 Paint()实现。在C#中,您拥有为每个接口实现版本的选项,因此您可以根据类的调用方式获得不同的行为。
所以,如果我打电话:
SampleClass c = new SampleClass();
((IControl)c).Paint();
((ISurface)c).Paint();
我打印出“IControl.Paint”,然后打印出“ISurface.Paint”。
答案 1 :(得分:2)
在Java中,显式和隐式之间没有区别。如果你有两个接口都声明一个具有相同签名的方法,以及一个实现这两个接口的类,那么具有正确签名的类中的方法将实现BOTH接口中的方法。