考虑 Java 中的以下接口(interface):
public interface I {
public final String KEY = "a";
}
还有下面的类:
public class A implements I {
public String KEY = "b";
public String getKey() {
return KEY;
}
}
为什么类 A 可以覆盖接口(interface) I 的最终常量?
亲自尝试一下:
A a = new A();
String s = a.getKey(); // returns "b"!!!
最佳答案
你把它隐藏了,这是“Scope”的一个功能。任何时候你在一个较小的范围内,你都可以重新定义你喜欢的所有变量,并且外部范围变量将被“隐藏”
顺便说一句,如果您愿意,您可以再次确定范围:
public class A implements I {
public String KEY = "b";
public String getKey() {
String KEY = "c";
return KEY;
}
}
现在 KEY 将返回“c”;
编辑是因为重读时原著很糟糕。
关于java - 为什么Java中的final常量可以被重写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/205239/