接口中定义变量必须为publicstaticfinal的原因是什么

接口中定义变量必须为public static final的原因是什么?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

创新互联建站电话联系:028-86922220,为您提供成都网站建设网页设计及定制高端网站建设服务,创新互联建站网页制作领域十余年,包括成都格栅板等多个行业拥有丰富的网站营销经验,选择创新互联建站,为网站保驾护航。

首先接口是一种高度抽象的"模版",,而接口中的属性也就是’模版’的成员,就应当是所有实现"模版"的实现类的共有特性,所以它是public 的 ,是所有实现类共有的 .否则具体实现类不能使用该变量,则就没有了定义的意义。 
static的原因是,假如可以是非static的话,因一个类可以继承多个接口,出现重名的变量,如何区分呢?所以必须定义成static的,以便区分。 
例如一个类实现了两个不同的接口,这两个接口中有相同名字的变量定义,示例代码如下:    

public class MultiInmpl  implements InTF, InTFOther { 
           /** 
          * @param args 
          */ 
           public static void main(String[] args) { 
           // TODO Auto-generated method stub 
           MultiInmpl m = new MultiInmpl(); 
           //如果实现的接口中有同名的变量,则不能引用 
          System.out.println( m.str );//str在2个接口中都有定义 
     } 
}  

其次,接口中如果可能定义非final的变量的话,而方法又都是abstract的,这就自相矛盾了,有可变成员变量但对应的方法却无法操作这些变量,虽然可以直接修改这些静态成员变量的值,但所有实现类对应的值都被修改了,这跟抽象类有何区别? 又接口是一种更高层面的抽象,是一种规范、功能定义的声明,所有可变的东西都应该归属到实现类中,这样接口才能起到标准化、规范化的作用。所以接口中的属性必然是final的。

看完上述内容,你们掌握接口中定义变量必须为public static final的原因是什么的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!


网页题目:接口中定义变量必须为publicstaticfinal的原因是什么
链接分享:http://hbruida.cn/article/pejjod.html