不灭的焱

革命尚未成功,同志仍须努力

作者:php-note.com  发布于:2018-08-19 20:03  分类:Java  编辑

遇到一个问题:

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类型,  

所以在任何包的类中均可以用 “接口.字段” 的形式来使用  

 

 

摘自:https://bbs.csdn.net/topics/310226