gpt4 book ai didi

java - 为什么在java中接口(interface)中的静态最终变量可以被本地变量覆盖?

转载 作者:行者123 更新时间:2023-12-01 06:35:09 24 4
gpt4 key购买 nike

我知道静态意味着,内存中只有一个它的实例。我知道final意味着它不能被更改或子类化,我也知道java接口(interface)中定义的任何变量都是静态final

现在的问题是,为什么我可以覆盖“XFace”类中接口(interface)“MyFace”中的最终静态变量“a”?

示例:

public interface MyFace {
static final int a = 15;

void smile();
}

然后在类里面我可以轻松地使用本地 a 来覆盖 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
}

为什么我可以在 smile() 方法中定义 int a=3 ? “a”不是最终的和静态的吗?它如何被覆盖?

最佳答案

它没有被覆盖,它是阴影,这意味着有一个具有相同简单名称的更接近的变量优先。您仍然可以通过使用更长的名称 MyFace.a 来使用 static Final

关于java - 为什么在java中接口(interface)中的静态最终变量可以被本地变量覆盖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20173445/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com