java接口如何分类
Java接口分类方式
Java接口可以按照功能、设计模式或使用场景进行分类,以下是常见的分类方式:
按功能分类
标记接口(Marker Interface)
不包含任何方法声明,仅用于标记类具有某种特性。例如:
java.io.Serializable:标记类可序列化java.lang.Cloneable:标记类可克隆
函数式接口(Functional Interface)
仅包含一个抽象方法,支持Lambda表达式。例如:
@FunctionalInterface
interface Runnable {
void run();
}
常量接口
仅包含静态常量(不推荐使用,易导致命名污染)。例如:
interface Constants {
String DEFAULT_NAME = "Unknown";
}
按设计模式分类
策略模式接口
定义算法族,供类动态选择行为。例如:
interface SortingStrategy {
void sort(int[] data);
}
观察者模式接口
用于事件监听机制。例如:
interface EventListener {
void onEvent(Event e);
}
工厂模式接口
定义对象创建规范。例如:
interface LoggerFactory {
Logger createLogger();
}
按使用场景分类
服务提供者接口(SPI)
允许第三方实现扩展功能。例如JDBC的java.sql.Driver接口。
回调接口
用于异步操作完成后通知调用方。例如:
interface Callback {
void onComplete(Result result);
}
远程接口(RMI)
定义远程方法调用规范,需继承java.rmi.Remote。
其他分类
单方法接口
仅包含一个方法,常见于函数式编程。例如Comparator<T>。
默认方法接口
Java 8+支持通过default关键字提供默认实现。例如:
interface TimeClient {
default void showTime() {
System.out.println(LocalTime.now());
}
}
私有方法接口
Java 9+允许在接口中使用private方法封装内部逻辑。
选择接口类型时需考虑:

- 是否需要强制实现所有方法
- 是否需要支持Lambda表达式
- 是否需要提供默认实现
- 是否用于扩展系统功能






