Skip to content
基础

一句话答案

接口定义能力规范支持多实现,抽象类定义模板只能单继承;JDK8 后接口可有 default 方法,两者边界模糊。

核心要点
维度接口抽象类
继承多实现单继承
方法抽象+default抽象+具体
变量只能static final可以有实例变量
构造器
追问与易错

追问方向:

  • JDK8 的 default 方法带来了什么问题?(菱形继承冲突需手动解决)
  • 什么时候用接口什么时候用抽象类?(能力用接口,模板用抽象类)
  • 函数式接口是什么?(只有一个抽象方法,可用 Lambda)

易错点:

  • ❌ "接口不能有实现"——JDK8+ 可以有 default/static 方法
  • ❌ "抽象类必须有抽象方法"——不是必须的,可以全是具体方法

💡 记忆锚点

接口是资格证(能做什么,可以考多个),抽象类是家族血统(是什么,只能有一个爹)。JDK8后接口也能有default方法了,但接口没有实例变量和构造器——资格证不管你家有多少财产。