【问题标题】:Why the answer will be "GOOD"?为什么答案会是“好”?
【发布时间】:2013-09-02 18:19:22
【问题描述】:

以下是我尝试运行的代码,输出为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);
    }
}

【问题讨论】:

    标签: java class object interface


    【解决方案1】:

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

    【讨论】:

    • 这就是为什么你可以在接口声明中省略public,不那么冗长。
    【解决方案2】:

    Test实现IDummyInterface.所以IDummyInterface的所有变量都被继承了

    【讨论】:

      【解决方案3】:

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

      class StaticTestParent { public static final int VALUE = 1; }
      class StaticTestChild extends StaticTestParent { }
      
      static {
        System.out.println(StaticTestChild.VALUE);
      }
      

      【讨论】:

        猜你喜欢
        • 2022-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-26
        • 2019-09-19
        • 1970-01-01
        相关资源
        最近更新 更多