Java面试-13:接口和抽象类有什么共同点和区别?

Java面试-13:接口和抽象类有什么共同点和区别?

一、共同点(两者都不能直接实例化)

  1. 都不能直接 new 对象

    不能直接 new 接口()new 抽象类(),必须由子类 / 实现类去继承 / 实现后使用。

  2. 都可以包含抽象方法

    都能定义没有方法体的方法,强制子类去实现。

  3. 都属于抽象层设计

    用来定义规范 / 模板,让具体类去实现细节,符合面向抽象编程思想。

  4. 都可以被继承 / 实现

    抽象类用 extends 继承,接口用 implements 实现。

二、核心区别

对比项

抽象类 (Abstract Class)

接口 (Interface)

继承方式

单继承(一个类只能继承一个)

多实现(一个类可实现多个)

成员变量

可定义任意变量:普通变量、常量

只能是 public static final 常量

方法

可包含:抽象方法、普通方法、构造方法

JDK8+:抽象方法、默认方法、静态方法

构造方法

有构造方法

没有构造方法

设计目的

模板设计(为子类提供通用功能)

规范 / 契约设计(定义行为标准)

访问修饰符

方法 / 变量可使用任意修饰符

接口默认 public,不能用 private/protected

总结

  1. 共同点:都不能实例化、都能包含抽象方法、都是抽象层设计。

  2. 核心区别:抽象类单继承、有构造方法、可定义普通变量;接口多实现、无构造方法、只能定义常量

  3. 使用场景:需要复用代码用抽象类;需要定义规范 / 扩展能力用接口。

Java面试-12:面向对象的三大特性? 2026-03-24
Java面试-14:==与equals()的区别 2026-03-24

评论区