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

Java/Kotlin中Abstraction抽象概念疑问:普通类继承是否属于抽象实现

关于抽象概念的三个问题解答

问题1:第一种使用普通open类继承的场景是否符合抽象的定义?

符合。抽象的核心定义是隐藏特定细节、仅向用户展示必要信息,你在代码里将变量声明为父类SimpleClass类型,调用方只能访问SimpleClass对外暴露的公共方法,完全感知不到底层实际是ChildSimpleClass的实现,已经满足抽象的核心特征。

问题2:如果符合,为什么多数资料都称抽象是通过接口和抽象类实现的,而非普通类?

因为普通类实现抽象存在非常多的天然局限性,工程上很少作为主流的抽象实现方案,所以资料大多优先介绍专门为抽象设计的语法结构:

  • 普通open类支持直接实例化,无法强制调用方必须依赖抽象契约而非具体实现
  • 普通类的方法默认自带实现,无法强制子类必须重写核心逻辑,容易出现子类漏改导致的逻辑bug
  • 普通类是单继承限制,无法实现多维度抽象契约的组合,接口支持多实现的特性能很好的解决这个问题
    不是普通类不能实现抽象,只是它的约束性太弱,适用场景极窄,所以资料不会重点讲解这种用法。

问题3:如果不符合,该场景下调用方仅感知到SimpleClass的公开方法、未暴露ChildSimpleClass的实现细节,为什么不算抽象?

这个场景是符合抽象定义的,不存在不符合的情况。你感知到的「调用方只感知父类公开方法、不感知子类实现细节」就是抽象的核心表现,只是这种实现方式的约束性差,不属于工业界推荐的抽象实现方案而已。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:24:03