gpt4 book ai didi

java - 覆盖接口(interface)的变量?

转载 作者:搜寻专家 更新时间:2023-10-30 21:40:38 28 4
gpt4 key购买 nike

正如我从各种 Java 书籍和教程中读到的,在接口(interface)中声明的变量是常量,不能被覆盖。

我写了一个简单的代码来测试一下

interface A_INTERFACE
{
int var=100;
}

class A_CLASS implements A_INTERFACE
{
int var=99;
//test
void printx()
{
System.out.println("var = " + var);
}
}

class hello
{

public static void main(String[] args)
{
new A_CLASS().printx();
}
}

然后打印出来变量 = 99

var 是否被覆盖?我完全糊涂了。感谢您的任何建议!


非常感谢大家!我对这个界面很陌生。 “影子”是理解这一点的关键词。我查了相关资料,现在明白了。

最佳答案

它没有被覆盖,但被隐藏了,因为接口(interface)中的常量也是静态的,所以会造成额外的混淆。

试试这个:

A_INTERFACE o = new A_CLASS();
System.out.println(o.var);

您应该收到有关以非静态方式访问静态字段的编译时警告。

现在这个

A_CLASS o = new A_CLASS();
System.out.println(o.var);
System.out.println(A_INTERFACE.var); // bad name, btw since it is const

关于java - 覆盖接口(interface)的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8814153/

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