Java接口需要注意的细节

接口用interface关键字定义,所有方法默认都是public abstract的,可以省略这些修饰符。接口中的变量默认都是public static final的常量。

从Java 8开始,接口可以包含默认方法(default method),有方法体,实现类可以直接继承或重写。还可以包含静态方法(static method),有方法体,通过接口名直接调用。还有抽象方法(abtract method),没有方法体。

从Java 9开始,接口可以包含私有方法(private method),有方法体,只能在接口内部被默认方法或其他私有方法调用。

接口不能有构造方法,不能实例化(即不能new)。接口可以多继承其他接口,用extends关键字,可以继承多个接口。

某类实现接口用implements关键字,可以实现多个接口。实现类必须实现接口中的所有抽象方法(不包括默认方法和静态方法)。

如果实现类实现了多个接口,且这些接口有同名的默认方法,实现类必须重写该方法来解决冲突。

接口不能有实例字段,只能有常量。接口的方法不能是final的,因为需要被实现。

interface Animal {

// 这不是实例字段,是静态常量

int LEGS = 4; // 相当于 public static final int LEGS = 4;

// 错误!接口中不能有实例字段

// String name; // 编译错误

}

class Dog implements Animal {

// 类中可以有实例字段

String name; // ✅ 正确,这是类的实例字段

}

接口强调行为契约,关注"能做什么",而抽象类强调所属关系,关注"是什么"。

使用场景:当需要定义不同类都能实现的共同行为规范时,使用接口;当需要为不相关的类提供共同能力时,使用接口。

接口定义

  • 关键字 interface
  • 方法默认是 public abstract(可省略)
  • 变量默认是 public static final

JDK 8+ 接口可以包含

  • 抽象方法
  • 默认方法(default)
  • 静态方法

接口不能包含

  • 构造方法
  • 实例变量(只有常量)

接口可以多继承接口(extends多个接口)。

类可以实现多个接口(implements)。

 接口不能被实例化。

|-------------|---------------------------|--------------------------------------|
| 抽象类实现接口 | 抽象类实现接口时,可以不实现接口的抽象方法 | 具体职责会下放给抽象类的子类去实现。 |
| 多接口同名常量 | 若实现的两个接口有同名常量字段 | 使用时必须用 接口名.常量 消除歧义,直接写常量名编译报错。 |

相关推荐
要开心吖ZSH13 分钟前
MVCC 进阶:快照读 vs 当前读、幻读与 Next-Key Lock
java·数据库·sql·mysql·mvcc
京韵养生记17 分钟前
【无标题】
java·服务器·前端
会周易的程序员19 分钟前
microLog 后端开发指南
开发语言·c++·物联网·设计模式·日志·iot·aiot
小强库计算机毕业设计19 分钟前
源码分享Spring Boot + Vue3 的校园社团管理系统
java·spring boot·后端·计算机毕业设计
Esaka_Forever20 分钟前
Python 完整内存管理机制详解
开发语言·python·spring
星空露珠28 分钟前
迷你世界UGc3.0脚本Wiki[剧情动画模块管理接口 Timeline]
开发语言·数据结构·算法·游戏·lua
格子软件33 分钟前
2026年分布式GEO代理流量调度:源码级状态机防重挂实战
java·vue.js·人工智能·spring boot·分布式·vue
hj28625136 分钟前
Docker 容器化技术标准化笔记
java·笔记·docker
未来之窗软件服务44 分钟前
计算机考试-C语言 应用题—东方仙盟
c语言·开发语言·仙盟创梦ide·东方仙盟·计算机考试
想你依然心痛1 小时前
AtomCode在后端开发中的实战体验:Go微服务从零搭建
开发语言·微服务·golang