Java 接口详解:定义、实现与实战示例
什么是 Java 接口?
Java 接口 是定义类契约的抽象类型。它可声明常量和抽象方法,但不能持有状态。所有方法隐式为 public 和 abstract,类可实现多个接口,提供所需行为。
声明接口
interface MyInterface {
// 抽象方法
}
实现接口
class Dog implements Pet {
// 实现 Pet 的方法
}
扩展接口
interface RidableAnimal extends Animal, Vehicle {
// 额外抽象方法
}
为什么需要接口?
接口让你将 是什么 与 怎么做 分离。它们实现多态、促进松耦合,解决 Java 不支持类多重继承的问题。
例如,MediaPlayer 可能有 CDPlayer 和 DVDPlayer 子类,各自提供 play() 实现。若某类同时需要两种能力,Java 禁止类多重继承,但接口可干净组合行为。


同样,Dog 类可扩展 Animal 并实现 Pet 接口,同时满足继承和契约义务。

Java 接口示例
步骤 1: 编写以下代码:
interface Pet {
void test();
}
class Dog implements Pet {
@Override
public void test() {
System.out.println("Interface method implemented");
}
public static void main(String[] args) {
Pet p = new Dog();
p.test();
}
}
步骤 2: 编译运行查看输出。
类 vs 接口
| 类 | 接口 |
|---|---|
| 可实例化,可包含状态。 | 不可实例化,仅含常量和方法签名。 |
| 可有具体(已实现)方法。 | Java 8 前无具体方法;Java 8+ 可含 default 和 static 方法。 |
访问修饰符可为 private、protected、public。 | 所有成员隐式 public(字段为 static final)。 |
何时用接口 vs 抽象类?
- 抽象类: 需要公共基础实现或共享状态给相关类时使用。
- 接口: 需要定义可被无关类采用的角色或能力时使用。
接口关键事实
- 类可实现多个接口,但必须为每个声明的方法提供实现。
- 接口不可直接实例化;它们作为契约存在。
- 接口引用可指向任意实现类。
- 接口可扩展一个或多个其他接口。
- 允许在其他接口或类中嵌套接口。
- 若类实现两个接口,它们不能声明同名但返回类型不同的方法。
- Java 8 起接口可含
default和static方法。
总结
- 接口定义契约;类提供实现。
- 所有接口方法隐式
public和abstract(除非default或static)。 - 接口不可实例化但可被变量引用。
- 用接口实现多态并绕过 Java 单继承限制。
java
- C# 抽象类实战教程:从定义到派生的完整代码示例
- C# 接口详解:定义、示例与实战应用
- 精通 Java 接口:概念、实现与最佳实践
- Java Hello World 入门教程:从 JDK 安装到编译运行第一个程序
- Java 封装完全指南:数据隐藏、访问器/修改器、实战案例与核心优势
- Java String length() 方法:获取字符串长度(示例)
- Java String.charAt() 详解:语法、返回类型、异常与实战示例
- 精通 Java String.endsWith():检查字符串后缀(示例)
- Java 接口 vs 抽象类:如何选择合适的抽象方式
- Java BufferedReader 读取文件:实战指南与示例
- Java 插入排序算法详解:核心原理、完整代码与步骤演示
- Java 接口全解析:定义契约、默认方法、多实现与标记接口