2

有一个接口 1 具有方法 1、变量 x 和接口 2 具有方法 1、变量 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

4 回答 4

3

'x' 是模棱两可的,因为在范围内有两个,每个接口一个。相比之下,'method1()' 则不然,因为根据 Java 的规则,Test 中的定义满足提供两个接口中定义的实现的要求。

于 2013-01-12T07:13:21.250 回答
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
  }

}

这是正确的方法。

于 2013-01-12T06:35:59.307 回答
0

因为你的任务是模棱两可的。您必须指定是否需要interface1.xinterface2.x.

例如:

public class Test implements interface1, interface2{

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

}
于 2013-01-12T06:29:04.797 回答
-1

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

但是,method1()如果我们采用任何接口,方法的主体将是相同的,因为interface1.method1(),与 相同interface2.mathod1()。但另一方面与xinterface1.x不一样interface2.x

于 2013-01-12T07:00:01.933 回答