接触Java不多,白天写代码时候涉及到这个问题,就了解了一下,这才知道Java的接口中,定义的变量默认都是public static final的。从网上查了一点,结合自己的理解,感觉应该这么来看吧:
- 接口提供了用户和对象交互的一种方式,如果变量不是public,用户就无法访问它们;
- 只有将变量定义成static,才能说变量是属于接口的,而不是属于对象的,也不是运行时的对象类型;
- 如果变量不是final的,则所有的实现都可以改变变量的值,这时它就变成了实现的一部分,而接口提供的应该是以一种纯规范。
它应该体现了开闭设计原则,即对修改关闭,对扩展开放。