Med*_* Gh 0 java static final interface
我知道静态意味着,内存中只有一个实例.我知道final意味着它不能被改变或子类化,我也知道在java接口中定义的任何变量都是静态final
所以现在问题是,为什么我可以在"XFace"类的界面"MyFace"中超越最终的静态变量"a"?
例:
public interface MyFace {
static final int a = 15;
void smile();
}
Run Code Online (Sandbox Code Playgroud)
然后在课堂上,我可以轻松地骑过a,与当地人一起,
public class XFace implements MyFace {
@Override
public void smile() {
int a=3; // over riding interface's a variable and suprsingly it works !
System.out.println(a*2); // will print 6
}
Run Code Online (Sandbox Code Playgroud)
为什么我可以在smile()方法中定义int a = 3?是不是"一个"最终和静态?它怎么可能被覆盖?
chr*_*ke- 12
它没有被覆盖,它是阴影,意味着有一个更接近的变量,同一个简单的名称优先.您仍然可以使用static final更长的名称MyFace.a.