笔友城堡 - 可定义的个人主页

前言

java面试中经常被问抽象类(Abstract class)和接口(Interface)有啥区别?

下面简单的记录一下,方便自己查阅和回顾。

正文

抽象类

抽象类是对同一类事物本质特征的抽象,它回答的是“它是什么(is-a)”的问题。抽象类不仅定义了必须遵循的规范,还包含了已经实现的公共逻辑,主打代码复用与模板约束。

抽象类是事物的共性模板

特点:

  • 不能被实例化

  • 包含抽象方法、普通方法、成员变量、构造方法

  • 子类必须实现所有抽象方法(除非子类也是抽象类)

接口

接口是对事物行为能力的抽象,它回答的是“它能做什么(can-do)”的问题。接口不关心实现类的本质归属,只定义统一的行为规范,主打业务解耦与功能拓展。

接口是行为的标准化契约

特点

  • 一个类可实现多个接口

对比

抽象类 (Abstract Class)接口 (Interface)
聚焦“是什么”(is-a 关系),提取共性模板聚焦“能做什么”(can-do 关系),定义行为契约
支持实例变量、构造方法、任意权限的方法仅支持常量(Java 8+ 支持默认/静态方法),无构造器
继承extends多实现(implements
新增抽象方法需修改所有子类,耦合度偏高新增默认方法无需修改现有实现类,兼容性好

参考文章

AI

相关网址

笔友城堡 - 可定义的个人主页

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

none
暂无评论...