Java - 接口成员的价值

时间:2015-09-12 05:30:12

标签: java class interface

当我有一个实现接口的类时,该类的所有对象是否都具有接口中成员的相同值?

interface I {
 int element = 10;//since its public static final by default
 String s = "abcd"; 
}



class A implements I {
  private int timer;
  ...
  public void setTimer(int timer) {
      this.timer = timer
  }
}

假设有3个A对象,即a1,a2,a3

elements的所有对象值分别为10abcd吗?

是否可以改变它?(比如将A转换为I)。但是不可能创建具有不同element and s ...

值的A对象

请澄清我......

2 个答案:

答案 0 :(得分:1)

  

当我有一个实现接口的类时,该类的所有对象是否都具有接口中成员的相同值?

是。实现接口的类将继承每个接口的成员。

  

元素和s的所有对象值分别为10和abcd对吗?

  

是否可以改变它?

您无法更改final变量的值,但如果您希望element(例如)在不同的上下文中保存不同的值,则可以隐藏它。例如,您可以引入另一个名为element的变量,该变量包含另一个值:

interface A {
    int x = 10;
}

class B implements A {
    static int x = 5;
    void test() {
        System.out.println(x);
    }
}

此处,B.x变量隐藏 A.x常量。如果省略int x = 5声明,则System.out.println(x)将在A界面中打印常量。

答案 1 :(得分:0)

接口适用于静态最终变量。如果要在接口实现的类中更改变量值(覆盖而不是隐藏),最好选择抽象类和受保护的变量。