如果接口有两个具有相同名称的方法,同时首先实现一个呼叫?

时间:2013-11-30 07:07:21

标签: java

代码如下:

interface A
{
 void test();
}
interface B
{
 void test();
}
public class C implements A,B{
public static void main(String[] args) {
    C c=new C(); 
    c.test();
}
public void test()
{
    System.out.println("hai");

}

}

这里有o / p,但是调用了哪种界面方法我不知道请告诉我谁?

3 个答案:

答案 0 :(得分:3)

接口所需要的只是一个名为void的{​​{1}}方法,它不带任何参数。 test()的实现在您的班级,而不是接口。

此外,您无法使用test()实例化界面;但是,您可以执行以下操作:

new

A a = new C();

编辑
如果您从方法标题中取出B b = new C(); ,则无效,因为界面方法必须为{{ 1}}。尽管在声明标头时没有在接口中放置public,但接口方法默认为public - 这不能更改,并且将public放在接口内的标头中是不必要的

答案 1 :(得分:0)

您的代码看起来无效,因为您无法实例化A。

您可以使用new C(),但目前您正在做的是

A a=new A(); 

无效。

所以你可以这样做

A a = new C();

B b = new C();

但您无法实例化界面

修改: -

在您在问题中进行的编辑之后,看起来test()的实现在您的课程中,而不是界面。

答案 2 :(得分:0)

你无法启动像你正在做的界面

A a=new A(); 

你可以这样做

A a = new C();

然后调用哪个接口方法就没有问题了。