具有相同变量名称的Java接口是否被另一个变量扩展?

时间:2015-08-02 13:32:53

标签: java inheritance interface

我有接口A& B具有相同名称但不同值的变量。

 Interface A {

    public static final int a = 50;

    public void fun();

    }



Interface B {

public static final int a = 60;

public void fun();

}

另一个接口C扩展了A&乙

Interface C extends A, B {    

public void fun();

}

D类实现接口C

Class D implements C {



public void fun() {

/* Some code */
}

}

如果我使用D.a会怎样? 静态变量a中的哪一个由D类继承。

2 个答案:

答案 0 :(得分:2)

都不是。执行此操作时,对常量a的引用变得不明确,要求您明确指定哪一个:

public int fun() {
    return a; // Get an error below
}
  

错误:对“a”的引用含糊不清

public int fun() {
    return B.a; // Works fine
}

答案 1 :(得分:1)

它对编译器不明确,并且在使用时会导致错误,类似字段的内容不明确。由于该字段为static,因此您可以针对类名进行解析,例如A.aB.a