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

Dart子类MySmall实例object2的name属性为什么返回null?

问题原因

子类MySmall的构造函数虽然接收了name、mobile、gender、city四个父类属性对应的参数,但是在调用父类构造方法时没有将这些参数传入,仅仅执行了无参数的super(),导致父类的对应属性没有被赋值,因此访问object2.name时返回null。

解决方法

在子类初始化列表调用父类构造函数时,将接收到的父类参数透传即可,修改后的MySmall类代码如下:

class MySmall extends MyMain{
    int age;
    String std;
  
    MySmall({this.age, this.std, name, mobile, gender, city})
    : super(name: name, mobile: mobile, gender: gender, city: city);
}

修改后重新运行代码,print(object2.name)就会正常输出object2。
如果是开启了空安全的高版本Dart环境,还需要给可空属性加上?标识或者增加required修饰符,避免编译报错:

// 空安全版本写法
class MyMain{
    String? name;
    int? mobile;
    String? gender;
    String? city;
  
    MyMain({this.name, this.mobile, this.gender, this.city});
}

class MySmall extends MyMain{
    int? age;
    String? std;
  
    MySmall({this.age, this.std, String? name, int? mobile, String? gender, String? city})
    : super(name: name, mobile: mobile, gender: gender, city: city);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 15:27:03