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

继承类时如何实现父类回调并仅暴露必填name参数

Dart子类构造函数隐藏父类必填参数的实现方案

完全可行,通过子类构造函数的初始化列表即可实现,同时能阻止用户传入callback参数,具体实现如下:

核心思路

子类定义仅接收name参数的构造函数,在初始化列表中调用父类构造时,传入子类自行实现的callback逻辑,不对外暴露callback参数入口。

代码示例

基础实现

class Sub extends Super {
  // 子类构造函数仅要求传入name参数
  const Sub({required super.name}) 
      // 初始化列表中传入子类自定义的callback
      : super(callback: () {
          // 这里编写子类专属的callback逻辑
          print("子类的callback被触发");
        });
}

更规范的实现(抽离callback逻辑)

如果callback逻辑较复杂,可抽离为静态方法,提高代码可读性:

class Sub extends Super {
  // 子类内部的callback实现,私有化避免外部调用
  static void _subCallback() {
    print("子类的静态callback被触发");
  }

  const Sub({required super.name}) 
      : super(callback: _subCallback);
}

效果说明

  • 用户实例化Sub时,只能传入name参数,无法指定callback,完全由子类控制该逻辑。
  • 保持了父类const构造的特性(如果需要),符合Dart的常量构造规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:45:31