Java接口是定义行为契约的机制,不可实例化,含默认public abstract方法和public static final常量;支持default、static(Java 8)、private(Java 9)方法;类用implements实现,可多实现;接口可extends多继承;用于能力契约、回调、解耦与模拟多重继承。

Java 中的接口(Interface)是用来定义行为契约的核心机制,不是类,也不能被直接实例化,它的作用是让不同类遵循统一的方法规范,从而支持多态、解耦和灵活扩展。
接口怎么定义
用 interface 关键字声明,内部默认只包含抽象方法和常量:
- 所有方法默认是 public abstract,可省略不写;
- 所有字段默认是 public static final,必须初始化,且不可修改;
- 接口名建议首字母大写,常用 -able、Listener 等后缀,如 Runnable、Comparable;
- 从 Java 8 开始可添加 default 方法(有实现,子类可不重写)和 static 方法(只能通过接口名调用);
- Java 9 起支持 private 方法,用于复用 default 方法中的逻辑。
示例:
public interface Animal {
String TYPE = "mammal"; // 自动 public static final
void makeSound(); // 自动 public abstract
default void sleep() { System.out.println("Sleeping..."); }
static void info() { System.out.println("Animal interface"); }
}
立即学习“Java免费学习笔记(深入)”;
接口怎么实现
类通过 implements 关键字实现接口,需满足以下规则:
- 非抽象类必须重写接口中所有 abstract 方法,且重写方法访问修饰符必须为 public;
- 若不全部实现,该类必须声明为 abstract;
- 一个类可同时 implements 多个接口,用逗号分隔;
- 若多个接口含同名同签名的 default 方法,实现类必须显式重写该方法以解决冲突。
示例:
public class Dog implements Animal, Runnable {
@Override
public void makeSound() { System.out.println("Woof!"); }
@Override
public void run() { System.out.println("Running..."); }
@Override
public void sleep() { System.out.println("Dog sleeping"); } // 解决冲突
}
接口之间的继承
接口可以使用 extends 继承其他接口,支持多继承:
- 一个接口可 extends 多个接口,如 interface A extends B, C;
- 被继承的接口中的抽象方法、default 方法、常量都会被继承;
- 子接口可新增方法,也可重写父接口的 default 方法(用 default 修饰覆盖)。
示例:
public interface Pet extends Animal {
void beFriendly();
}
实际使用场景
接口常见用途包括:
- 定义能力契约:比如 Comparable 表明对象可比较,Serializable 表明对象可序列化;
- 回调与策略模式:传入接口实现类作为参数,运行时决定行为,如 Comparator;
- 解耦模块依赖:高层模块依赖接口而非具体实现,便于替换和测试;
- 模拟多重继承效果:类单继承限制下,靠实现多个接口获得多种能力。
不复杂但容易忽略。


















