为什么答案会“好”?

时间:2013-08-30 05:44:42

标签: java class object interface

以下是我尝试运行的代码,输出为Good。那么,我们可以使用由类实现的接口变量吗?

interface IDummyInterface {
    public String TYPE = "Good";
}

class Test implements IDummyInterface {

}

public class MyApplication {
    public static void main(String[] args) {
        System.out.println(Test.TYPE);
    }
}

3 个答案:

答案 0 :(得分:6)

任何实现接口的类,以及任何扩展实现该接口的类的类都会继承所有接口变量。无论你如何在接口中声明变量,所有接口变量都是public static final,这就是为什么你只能使用类名而不是类的实例来访问它们。

答案 1 :(得分:2)

Test实现了IDummyInterface。所以IDummyInterface的所有变量都是继承的

答案 2 :(得分:2)

变量实际上是static final。因为它是static,所以它遵循与在类中声明的所有静态变量相同的规则,这些静态变量可以通过从其继承的任何其他类访问。在这方面,接口的行为类似于类。

class StaticTestParent { public static final int VALUE = 1; }
class StaticTestChild extends StaticTestParent { }

static {
  System.out.println(StaticTestChild.VALUE);
}