接口中常量默认public static final,方法默认public abstract;default/static方法需显式声明;接口本身仅支持public或包级访问修饰符。

Java 接口中,方法和常量的访问修饰符有明确的默认规则,不需要显式写出,但编译器会自动补全——理解这点能避免编译错误,也更符合接口的设计本意。
接口中的常量默认是 public static final
你在接口里定义的字段,哪怕只写 int MAX_SIZE = 100;,Java 也会把它当作 public static final int MAX_SIZE = 100; 处理。
- 不能加
private、protected或volatile等修饰符,否则直接报错 - 不能是实例变量(即不能去掉
static),因为接口不能有状态 - 命名习惯用全大写加下划线,比如
DEFAULT_TIMEOUT
接口中的普通方法默认是 public abstract
Java 8 之前,接口只能有抽象方法;从 Java 8 开始仍保持兼容,默认方法仍是 public abstract,即使你省略这两个词。
- 写成
void start();就等价于public abstract void start(); - 不能加
private或protected(Java 9+ 虽支持私有方法,但仅限private,且必须显式声明) - 不能加
static或default,除非你明确想定义静态方法或默认方法
Java 8+ 新增的 default 和 static 方法需显式标注
这些不是“默认”的,而是新语法特性,必须写清楚修饰符:
-
default void stop() { ... }—— 实现类可选择重写 -
static void log(String msg) { ... }—— 只能通过接口名调用,如MyInterface.log("test") - Java 9+ 支持
private void helper() { ... },用于复用 default/static 方法中的逻辑
接口本身的访问修饰符只有 public 或默认(包级)
接口声明时的修饰符决定了谁能实现或继承它:
-
public interface Flyable:任何包都能实现 -
interface Flyable(无修饰符):只有同包内的类可以实现 - 不能用
private、protected修饰接口本身
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











