Java接口查询

4 java inheritance interface

如果我们执行运行以下代码,则输出为10.


interface X{
 int abc = 0;
}
interface XX extends X{
 int abc = 10;
}
class XTest implements XX
{
 public static void main(String[] args) 
 {
  System.out.println("Hello World! --> " +abc);
 }
}
Run Code Online (Sandbox Code Playgroud)

但是根据Java,接口变量是public static final.但我如何得到10作为输出?

duf*_*ymo 5

此代码可以正常工作.

你XTEST类实现XX,因此它的价值abc从公共静态终审该接口.

XX阴影X,所以它取代了abcX 的值.

  • "阴影"更像是替换和隐藏而不是覆盖,但在这种情况下效果类似.XX中的abc替换并隐藏了X中的abc.X中的abc仍然存在.实现XX的类必须引用X.abc才能看到0值. (2认同)