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

时间:2010-03-02 09:15:13

标签: java .net interface

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

2 个答案:

答案 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接口中的方法。