遇到一个问题:
interface Foo {
int k = 0;
}
public class Test implements Foo {
//......
}
public static void main(String args[]) {
int i;
Test test = new Test();
i = test.k;
i = Test.k;
i = Foo.k; // 直接访问 接口的字段 !!!
}
}
答案:Compilation succesds.
我觉得 i = Test.k;应该出错,因为 k 并不是 Test 的 static变量 啊!
在 interface 中的定义的字段都自动编译为 public final static 类型,可以通过三种方式访问:
1、接口.变量;2、扩展类.变量;3、扩展类的实例.变量。
小衲补充一点:
在interface中的定义的变量都自动说明为 public final static类型,
所以在任何包的类中均可以用 “接口.字段” 的形式来使用