为什么接口中的变量强制为public static final?public我能理解,static final又是为什么呢?
同样,接口中的内部类也强制为public static,为什么?java interface

解决方案 »

  1.   

    static表示成员是接口的,而不属于接口实例的成员。在内存中只有一个地址。
    final表示一旦初始化了,便不允许在运行时修改,以保障数据的安全性。
      

  2.   

    我的意思是为什么强制这么多修饰符,为什么不可以只让变量只有一个修饰符,比如public。public interface Example{
    public int number;/*这里无法通过编译,java语言机制强制number必须为public static final且初始化才能编译通过,为什么要有这种强制?*/
    public void print();
    }
      

  3.   

    个人觉得这篇文章值得看看,或许能对理解java为什么这样有所帮助。
    http://developer.51cto.com/art/200906/130093.htm
      

  4.   

    因为接口不能实例化  不new对象你怎么访问 成员变量呢? 只能是static  
    一般来说 接口里的成员肯定是不会变的 所以加final   
     public是要把这个变量设置成最大的权限以供其他类可以访问~   
      

  5.   


    其实我觉得这个没什么好纠结的。
    Java本来就是强类型的语言。
    用sun的话来说就是“你喜欢你就用,不喜欢你就不用。”程序员上下级间做代码交流基本都靠接口了。
    你可以试想一下如果你做项目经理了,你给下面写接口。
    结果你手底下的人实现以后各种乱改,你就明白了。
      

  6.   

    谁和你说INTERFACE 中的变量需要强制为STATIC FINAL? 被你一说 我都糊涂了。 特地去ECLIPSE里试了下public interface AA {
    public int a =2;
    }可以通过啊。
      

  7.   

    ls的当然可以通过了因为编译器帮你加上static了 。你想 如果不是static的你这个变量定义的还有用吗?接口本身是不能实例化的...
      

  8.   

    因为接口不能被实例化,如果接口中的变量不是public static final,变量就不能被访问。
    PS:接口中定义的变量一般都是当常量使用