java中定义接口用interface关键字,类通过implements实现;接口只含抽象方法(public abstract)和常量(public static final),支持default/static方法(java 8+)、多实现、继承及多态。

Java 中定义接口用 interface 关键字,类通过 implements 关键字实现它。接口里只能声明抽象方法(默认 public abstract)和常量(默认 public static final),不能有普通字段或方法实现。
定义一个接口
接口是行为的契约,描述“能做什么”,不关心“怎么做”。比如定义一个可飞行的接口:
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
interface Flyable {
int MAX_ALTITUDE = 10000; // 接口中的变量自动是 public static final
void takeOff(); // 自动是 public abstract
void fly();
void land();
}
让类实现该接口
使用 implements 关键字,并且必须重写接口中所有抽象方法(除非类本身是 abstract):
class Airplane implements Flyable {
@Override
public void takeOff() {
System.out.println("飞机起飞");
}
@Override
public void fly() {
System.out.println("飞机巡航中");
}
@Override
public void land() {
System.out.println("飞机降落");
}
}
- 一个类可以实现多个接口,用逗号分隔,如
class Bird implements Flyable, Singable - 接口可以继承其他接口,用
extends,例如interface SmartFlyable extends Flyable - 从 Java 8 开始,接口可包含 default 方法(有默认实现)和 static 方法
使用实现类的对象
实现类的对象可以赋值给接口类型变量,体现多态性:
Flyable plane = new Airplane(); plane.takeOff(); // 输出:飞机起飞
- 这样写便于解耦——调用方只依赖 Flyable 接口,不关心具体是 Airplane 还是 Drone
- 接口变量不能直接 new,因为接口不能实例化
注意常见错误
- 忘记 @Override 或方法签名写错(如参数类型、返回值不同),编译报错
- 把 implements 写成 extends(类继承用 extends,实现接口才用 implements)
- 在接口中写了 private 方法或普通字段(Java 9+ 支持 private 方法,但仅用于 default 方法内部复用)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










