java接口中成员变量默认为public static final,即只能定义全局常量,不可修改,编译器自动补全修饰符,且不能定义实例变量或非final变量。

Java 接口中定义的成员变量默认具有 public static final 修饰符。
这意味着:
-
public:变量对外公开,任何实现类或外部代码都可以直接通过接口名访问(如MyInterface.CONST_VALUE); -
static:变量属于接口本身,不依赖实例,所有实现类共享同一份值; -
final:变量是常量,一旦赋值就不能被修改,必须在声明时初始化。
所以,下面两种写法完全等价:
interface Config {
public static final int MAX_RETRY = 3;
}
interface Config {
int MAX_RETRY = 3; // 编译器自动补全为 public static final
}
注意:
- 接口里不能定义普通实例变量,也不能有
private、protected或非final的变量; - 如果需要可变状态,应放在实现类中,而不是接口里;
- Java 8+ 虽然支持
default和static方法,但成员变量仍严格限于public static final,没有例外。
接口的本质是契约和规范,变量在这里只用于定义全局常量,不是为了保存对象状态。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











