java 接口中的定义的变量为什么是 static final的?

解决方案 »

  1.   

    为什么说不明白,这是别人就这么做的设计规范,没有为什么?
    java接口本来就是做规范的,如果是变量而不是常量就没意义了。
      

  2.   

    因为接口本来就是别人拿来用的,是一种规范,你想如果它里面的变量不是static final,那别人拿这个接口来使用的时候,你定义的这个变量还有什么作用呢
      

  3.   

    楼主,,接口中定义一个常量的格式是
    public static final int/float/... = ....;其中public 可以省略,,但是省略不代表修饰符是default类型的,它仍然是public类型的
      

  4.   

    在接口的字节码被装载到虚拟机的时候他的常量就得被访问,所以他必须是static final的
    static final叫编译期常量,不需要初始化就能读取。
      

  5.   

    java 接口是一个纯粹的抽象类,不提供任何具体的实现,只是提供了一个协议,实现它的子类共同遵守这份协议。接口A中的属性a如果可以定义为静态变量,那么就可以直接通过A.a=xxx;的方法直接修改该属性,而这样做是不安全的。因为接口中的属性是所有实现它的子类共享的,是全局变量,每一个更改都会影响所有的子类。