有一个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
}
}
答案 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.x
或interface2.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()
相同。
但另一方面x
。
interface1.x
与interface2.x