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
相关产品推荐
相关产品推荐

