java中interface定义接口,是只声明公共行为规范的契约,不能实例化,供类通过implements实现;接口内方法默认public abstract,字段默认public static final,命名推荐形容词如runnable,支持多实现以弥补单继承限制。

Java 中用 interface 关键字定义接口,本质是声明一套公共行为规范——只说“必须提供哪些方法”,不说“怎么实现”。它不是类,不能被 new 出实例,而是供其他类去 实现(implements)的契约。
接口的基本声明格式
语法结构简洁明确:
- 用
interface替代class,后跟接口名(推荐以大写 I 开头,如IRunnable、IReadable) - 内部默认全是
public abstract方法,可省略修饰符,直接写方法签名 - 可定义常量,自动加上
public static final,无需显式写出
示例:
public interface USB {
void openDevice(); // 抽象方法:必须由实现类提供具体逻辑
void closeDevice(); // 同上
int MAX_VOLTAGE = 5; // 常量:等价于 public static final int MAX_VOLTAGE = 5;
}
接口命名与设计习惯
命名不是随意的,它传递语义和用途:
- 接口名倾向用形容词,强调“具备某种能力”,比如
Searchable、Serializable、Cloneable - 阿里编码规范建议不加任何修饰符(如
public或abstract),保持干净,增强可读性 - 避免用动词开头(如
Run),而用Runnable更准确——表示“可被运行的”状态或能力
接口如何被使用(实现)
声明只是第一步,关键在落地:
- 类通过
implements关键字实现接口,例如:class Mouse implements USB - 实现类必须重写接口中所有抽象方法,否则编译报错;若不想立即实现,该类需声明为
abstract - 一个类可以同时实现多个接口,用逗号分隔:
class Document implements Printable, Readable, Displayable
这正是接口弥补 Java 单继承限制的核心价值:让一个类能“扮演多个角色”。
接口不是抽象类,但承担更纯粹的抽象职责
区别要清楚:
- 接口不能有构造方法、普通成员变量、非抽象实例方法(JDK 8+ 支持 default/static 方法,但仍是特例)
- 接口中的所有方法默认公开抽象,所有字段默认公开静态常量
- 它表达的是 “has-a capability”(有没有某项能力),而不是 “is-a” 的继承关系
比如 USB 接口不表示“鼠标是一个 USB”,而是“鼠标具备 USB 设备的能力”。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











