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

Dart子类是否会隐式继承const构造函数?

Dart子类const构造函数的疑问解答

咱们先直接给结论:你的Child类不会隐式拥有const构造函数,必须显式定义才能支持const实例化。

这里得明确Dart的一个核心规则:构造函数(包括const构造函数)是不会被子类继承的——哪怕父类用了const构造,子类也不会自动获得对应的const构造逻辑。

当你不给Child显式定义任何构造函数时,Dart会自动生成一个默认的无参非const构造函数,逻辑上等同于:

Child() : super();

但这个默认构造不是const类型的,所以如果你尝试写const child = Child();,编译器会直接报错,因为普通构造没法创建const实例。

如果想要让Child支持const实例化,你必须显式定义自己的const构造函数,并且在初始化列表里调用父类的const构造:

class Child extends Parent {
  const Child() : super(); // 显式声明const构造,调用父类的const构造
}

这样就能正常用const Child()创建const实例了。

另外补充个小细节:如果父类的const构造带有参数,子类的const构造也需要把对应的参数传递给父类的构造函数哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:07:46