Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

接口与抽象类怎样选择?

先说出你的答案

定义边界、关键机制、一个反例;P8题再补容量、失败与验证。

查看完整题解

参考回答

直接回答

接口主要定义可由不同类型实现的能力或协议,一个类能实现多个接口;抽象类适合共享实例状态、构造约束及一部分实现,一个类只能直接继承一个类。Java 21 的接口还能有 default、static、private 方法,因此“接口只能声明抽象方法”已经过时。

讲清原理

接口字段是 public static final,不是每个实现对象各有一份的普通实例字段;接口也没有构造器。抽象类则可有实例字段、构造器和不同访问级别的具体方法,并能在构造期间建立必要状态。

选型先问:调用方需要一个协议,还是一族对象确实共享状态和初始化规则?协议常用接口,共享骨架常用抽象类,二者可以配合,而不是互相排斥。

例子与易错点

需求 常见选择
多种存储都支持 save Repository 接口
同族任务共享编号和执行模板 抽象任务基类
一个类同时支持排序和关闭 实现多个接口

不要为了共享两行工具代码就引入继承,也别因为接口有 default 方法,就把大量可变业务状态搬进接口。抽象类同样不应塞入与这族对象无关的通用职责。

相关题:第 20 题、第 21 题、第 30 题、第 45 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。