Java接口中不能定义普通成员变量,只能定义public static final常量,必须在声明时初始化,通过接口名直接访问,如MyInterface.MAX_SIZE。

Java 接口中**不能定义普通成员变量**,只能定义**常量**(即编译期确定、不可修改的静态值)。
接口中不允许出现普通变量
接口描述的是“能力契约”或“行为规范”,不承担状态存储职责。所以像 name、count、isRunning 这类可变的成员变量,在接口里是语法非法的。编译器会直接报错。
接口中的变量默认是 public static final
你在接口里写:
int MAX_SIZE = 100;等价于显式写了:
立即学习“Java免费学习笔记(深入)”;
public static final int MAX_SIZE = 100;即使省略修饰符,Java 编译器也会自动补全这三个关键字:
- public:保证所有实现类和外部代码都能访问该常量
- static:属于接口本身,而非某个实例(接口不能被实例化)
- final:强制不可修改,体现“规则不变”的设计意图
必须在声明时初始化
因为是 final 常量,所以接口里的变量必须在定义处赋初值,不能留到后续代码中再赋值,也不能用构造块或方法初始化。
例如合法:
String NAME_PREFIX = "User_";double PI = 3.1415926;
以下写法非法:
int VERSION; // 编译错误:未初始化final int CODE; // 错误:final 变量必须在声明时或初始化块中赋值,但接口无初始化块
访问方式是 接口名.常量名
由于是 static,调用时不依赖对象,直接通过接口名引用:
System.out.println(MyInterface.MAX_SIZE);这种写法清晰、高效,也符合接口作为“共享常量容器”的常见用途(比如状态码、配置上限、协议版本等)。


















