一句话核心答案:接口是一种特殊的抽象类型,用interface定义,是行为的规范、标准,接口里全是公共抽象方法(Java8 + 支持默认 / 静态方法),支持多实现,是 Java 解耦、扩展的核心设计 🚀。
1. 什么是接口?
接口是行为规范,不是类,专门用来定义能做什么,不关心具体怎么做。
- 使用interface关键字定义
- 实现类使用implements关键字
- 接口体现can-do(具备某种能力) 关系
- Java8+ 支持默认方法、静态方法、私有方法
核心作用
- 定义统一规范、标准
- 打破单继承限制,支持多实现
- 降低代码耦合,提高扩展性
- 面向接口编程,企业开发必备
2. 接口语法规则
示例代码
// 定义接口
public interface Run {
// 抽象方法(默认 public abstract)
void running();
}
public interface Swim {
void swimming();
}
// 实现类:多实现
public class Dog implements Run, Swim {
// 必须重写所有抽象方法
@Override
public void running() {
System.out.println("小狗跑得快");
}
@Override
public void swimming() {
System.out.println("小狗会游泳");
}
}
测试类
public class TestInterface {
public static void main(String[] args) {
Dog dog = new Dog();
dog.running();
dog.swimming();
// 多态:接口引用指向实现类
Run run = new Dog();
run.running();
}
}
运行结果
小狗跑得快
小狗会游泳
小狗跑得快
关键点
- 接口无构造方法,不能 new 对象
- 支持多实现,解决 Java 单继承问题
- 方法默认public abstract,变量默认常量
- 接口与接口之间可以多继承
3. Java8+ 接口新特性
作用:让接口支持方法实现,方便扩展、不影响实现类。
示例
public interface MyInterface {
// 默认方法
default void defaultMethod() {
System.out.println("默认方法");
}
// 静态方法
static void staticMethod() {
System.out.println("静态方法");
}
}
4. 抽象类 vs 接口 终极对比表
| 定义关键字 | abstract class | interface |
| 使用关键字 | extends | implements |
| 继承 / 实现 | 单继承 | 多实现 |
| 构造方法 | ✅ 有 | ❌ 无 |
| 成员变量 | 任意类型 | 只能是public static final常量 |
| 方法 | 抽象 + 普通 + 构造 | 抽象 + default+static+private |
| 关系 | is-a(是一种) | can-do(具备能力) |
| 核心用途 | 模板、代码复用 | 规范、扩展、解耦 |
5. 接口实战场景(企业标准写法)
// 接口:统一规范
public interface UserService {
void addUser(String name);
}
// 实现类
public class UserServiceImpl implements UserService {
@Override
public void addUser(String name) {
System.out.println("添加用户:" + name);
}
}
说明:面向接口编程,方便切换不同实现类,Spring 全家桶核心思想。
6. 总结
| 核心关键字 | interface / implements |
| 继承限制 | 多实现,无数量限制 |
| 构造方法 | 无 |
| 成员变量 | 只能是常量 |
| 方法支持 | 抽象、默认、静态、私有 |
| 核心思想 | 定义规范、能力扩展 |
✅ 什么时候使用接口
- 需要定义统一标准、规范
- 需要多实现,突破单继承限制
- 希望代码低耦合、高扩展
- 企业级开发、框架设计(Spring/MyBatis)
❌ 什么时候用抽象类
- 有成员变量、构造方法需要复用
- 有大量通用代码需要继承复用
- 类之间满足is-a关系
🌟最终结论接口 = 行为规范 + 多实现 + 无构造方法,是 Java 面向接口编程的灵魂,和抽象类配合使用,能让代码结构更清晰、扩展性更强,是面试与开发必考点 🚀



