You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

接口能否包含带有实现的方法?——对Java文档描述的疑问

关于抽象类与接口特性相似性的解释

Oracle文档核心表述

Oracle文档指出:“抽象类与接口类似,无法实例化,且可包含有无实现的混合方法。但抽象类可声明非静态非final字段,还能定义公共、受保护及私有具体方法……”

疑惑解答

你之前认为“接口仅能包含抽象方法”是Java 8之前的旧规则,从Java 8开始,接口新增了两种带实现的方法:

  • default 默认方法:属于实例方法,带有具体实现,实现类可直接继承或重写
  • static 静态方法:属于接口本身的方法,带有具体实现,需通过接口名直接调用

这意味着现在的接口可以同时包含:

  • 无实现的抽象方法(传统接口方法)
  • 有实现的默认方法、静态方法

而抽象类本身就支持同时包含抽象方法(无实现)和各种访问修饰符的具体方法(有实现),所以文档才会说两者在“可包含有无实现的混合方法”这一特性上类似。

补充两者关键差异:

  • 抽象类可声明非静态非final字段,接口的字段默认是public static final
  • 抽象类的具体方法可用public、protected、private修饰,接口的默认方法、静态方法只能是public(默认修饰符)

内容的提问来源于stack exchange,提问作者Ell1357

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 15:30:43