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

Dart中能否以A类特定实例作为父类创建B类实例?

如何用已有A类实例创建B类实例?

在Dart里,每个子类实例都会自带一个独立的父类实例部分,没办法直接把已有的A实例“绑定”成B实例的父类。但可以通过复制A实例的属性,让新创建的B实例的父类部分和这个A实例保持属性一致,具体有两种常见实现方式:

1. 通过构造函数传递属性

给A类添加带参数的构造函数,同时给B类新增一个接收A实例的构造函数,在初始化父类时把A的属性传递进去:

class A {
  int id;
  A();
  // 新增带id参数的构造函数
  A.withId(this.id);
}

class B extends A {
  String param;
  B();
  // 新增从A实例创建B的构造函数
  B.fromA(A a) : super.withId(a.id);
}

使用方式:

var a = A();
a.id = 123;
var b = B.fromA(a);
print(b.id); // 输出123,和a的id一致

2. 用复制构造函数批量复制属性

如果A类的属性很多,逐个传递太麻烦,可以给A类添加一个复制构造函数,直接复制已有实例的所有属性:

class A {
  int id;
  A();
  // 复制构造函数,复制传入实例的属性
  A.copy(A other) : id = other.id;
}

class B extends A {
  String param;
  B();
  // 通过父类的复制构造函数初始化
  B.fromA(A a) : super.copy(a);
}

这种方式后续如果A类新增属性,只需要修改A的复制构造函数即可,不用改动B的代码,扩展性更好。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 04:04:57