当我有一个实现接口的类时,该类的所有对象是否都具有接口中成员的相同值?
即
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
element
和s
的所有对象值分别为10
和abcd
吗?
是否可以改变它?(比如将A转换为I)。但是不可能创建具有不同element and s
...
请澄清我......
答案 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)
接口适用于静态最终变量。如果要在接口实现的类中更改变量值(覆盖而不是隐藏),最好选择抽象类和受保护的变量。