在Java中实现接口是显式还是隐式?

uri*_*ium 4 .net java interface

我刚开始弄清楚.Net中隐式和显式接口实现的区别.由于我来自Java背景,这个想法仍然有点令人困惑.我希望知道哪些Java会使它更明显的区别是什么.我假设Java是显式的???

Pao*_*olo 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");
    }
}
Run Code Online (Sandbox Code Playgroud)

这里我们有两个Paint()方法,每个接口一个.在Java中,您只能有一个 Paint()实现.在C#中,您可以选择为每个接口实现版本,以便根据类的调用方式获得不同的行为.

所以,如果我打电话:

SampleClass c = new SampleClass();
((IControl)c).Paint();
((ISurface)c).Paint();
Run Code Online (Sandbox Code Playgroud)

我打印出"IControl.Paint",然后打印出"ISurface.Paint".