typescript 中抽象继承通过 abstract class + extends 在编译期强制约束,要求子类显式继承、调用 super()、完整实现所有 abstract 方法,混合包含具体与抽象成员,区别于仅描述结构的接口继承。

TypeScript 中的抽象继承不是 JavaScript 原生支持的概念,而是通过 abstract class + extends 语法在编译期强制实现的面向对象约束。它本质是 TypeScript 类型系统对继承行为的增强,不生成额外运行时代码,但能防止漏写关键逻辑。
抽象类必须用 extends 显式继承
子类不能隐式或默认继承抽象类;必须使用 extends 关键字声明,并在构造函数中调用 super() 初始化父类状态:
- 不写
extends就无法访问抽象类的任何成员(包括protected属性) - 即使只继承抽象方法,也必须显式声明
class Child extends AbstractParent - 构造函数里若父类有参数,必须传给
super(...),否则报错
子类必须完整实现所有 abstract 方法
抽象方法只有签名,没有实现体。子类继承后,TypeScript 编译器会检查是否每个 abstract 方法都被具体实现:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- 方法名、参数类型、返回类型必须完全匹配,否则违反子类型兼容性
- 不能省略某个 abstract 方法,也不能只写声明不写函数体
- 可选择用
override显式标注(推荐),提升可读性和编译检查精度
抽象类可含具体成员,也可含抽象成员
一个抽象类可以混合定义:
- 普通属性和方法(子类自动继承,可直接调用)
-
abstract属性(TS 4.9+ 支持,需子类用同名属性赋值) -
abstract方法(子类必须实现) - 构造函数中可含初始化逻辑,但抽象类本身不能被
new
抽象继承与接口继承的区别
抽象类继承强调“是什么 + 怎么做”的模板控制,而接口继承只描述“有什么”:
- 抽象类可包含实现逻辑、字段、构造函数;接口只能定义结构
- 一个类只能
extends一个抽象类(单继承),但可implements多个接口 - 抽象类中的
protected成员可在子类中访问;接口无访问修饰概念
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










