java中具有相同方法名和变量名的多个接口

时间:2013-01-12 06:25:17

标签: java oop interface

有一个interface1有method1,变量x和interface2有method1,变量x。 为什么它在第1行而不在第2行显示错误?

interface interface1{
    public int x =10;
    public void method1();
}
interface interface2{
    public int x =11;
    public void method1();
}

public class Test implements interface1, interface2{

    int y = x; // Line 1
    @Override
    public void method1() {  //Line 2
    }

}

4 个答案:

答案 0 :(得分:3)

'x'是不明确的,因为范围中有两个,每个接口一个。相反,'method1()'不是,因为根据Java的规则,Test中的定义满足了在两个接口中定义的提供它的实现的要求。

答案 1 :(得分:2)

interface interface1{
  public static final int x =10;
  public void method1();
}

interface interface2{
  public static final int x =11;
  public void method1();
}

public class Test implements interface1, interface2{

  int y = interface1.x; // Line 1 or int y = interface2.x;
  @Override
    public void method1() {  //Line 2
  }

}

这是正确的方法。

答案 2 :(得分:0)

因为你的作业含糊不清。您必须指定是否需要interface1.xinterface2.x

例如:

public class Test implements interface1, interface2{

  int y = interface1.x; // Line 1
  @Override
    public void method1() {  //Line 2
    }

}

答案 3 :(得分:-1)

在最终变量interaface1.x中,interface2.x;如果我们采用x interface1引用的对象可能与第二个接口不同。

但是在method1()中,如果我们采用任何接口,则方法体将与interface1.method1()相同,与interface2.mathod1()相同。 但另一方面xinterface1.xinterface2.x

不同