java接口用interface声明,本质是定义行为契约而非模板;方法默认public abstract,字段默认public static final;支持default和static方法增强契约表达力;需用javadoc明确业务语义与协作规则;允许多实现与接口继承以划清能力边界。

Java 中用 interface 关键字声明接口,本质是定义一套清晰、稳定、可协作的系统行为规范,不是写模板,而是立契约。
用 interface 写明“必须能做什么”
接口只声明能力边界,不涉及实现细节。所有方法默认是 public abstract,不用显式写;所有字段默认是 public static final,必须初始化且不可变。
- 接口名要直指职责,比如
OrderCanceller、InventoryChecker,避免BaseService这类模糊命名 - 方法签名只保留必要信息:返回类型、方法名、参数列表,例如
boolean canCancel(Order order) - 禁止在接口中声明普通实例字段、构造器、非 public 方法或带方法体的抽象方法
用 default 和 static 方法补全契约表达力
Java 8 起支持在接口中添加带实现的方法,它们不破坏契约性,而是让规范更完整、更易落地。
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
-
default方法提供通用逻辑,比如基础幂等检查、日志记录,实现类可直接用,也可按需覆盖 -
static方法适合工具性操作,如fromJson(String json)或金额校验validateAmount(double),它属于接口自身,不参与多态 - 两者都必须配 JavaDoc,说明适用场景和替换条件,例如:
@implSpec 本默认实现基于本地缓存,分布式环境请重写
用 JavaDoc 把协作规则写进契约里
接口文档不是技术说明书,而是调用方与实现方共同遵守的协议。
- 每个方法的 JavaDoc 要明确业务语义:参数含义(含约束)、返回值业务含义、异常触发条件(如
@throws InventoryLockTimeoutException) - 接口级 JavaDoc 要写清角色定位(如“用于支付前风控拦截”)、兼容承诺(
@since v2.1.0)、跨系统约定(如回调字段大小写、时间格式) - 避免写“该方法用于执行支付”,而应写“成功扣减库存并返回锁单ID;失败时返回 null,不抛异常,调用方需降级为异步补偿”
用多实现与接口继承划清能力边界
一个类可以 implements 多个接口,表示它同时具备多种正交能力;接口之间可用 extends 组合已有契约,形成更具体的规范。
- 比如订单服务类可同时实现
OrderCreator、OrderRefunder、OrderExporter,每种能力彼此独立、可单独测试和替换 - 子接口如
SecurePayment extends PaymentProcessor可追加安全相关方法,既复用又收敛职责 - 接口不能被 new,也不能有状态字段——它不是对象,是系统间沟通的语言本身
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










