错误:已定义默认构造函数

use*_*325 11 inheritance constructor dart

在Dart中,我有以下代码:

class FirstClass {
  FirstClass(a) {

  }
}

class SecondClass extends FirstClass {

}
Run Code Online (Sandbox Code Playgroud)

这会导致错误,SecondClass因为FirstClass它没有默认构造函数.

但是,当我尝试添加一个.

class FirstClass {
  FirstClass(a) {

  }

  FirstClass() {

  }
}
Run Code Online (Sandbox Code Playgroud)

它是错误的,因为已经定义了默认构造函数FirstClass.

我似乎只能使这项工作而不是错误的唯一方法是,如果超类根本没有实现任何构造函数.我究竟做错了什么?

Ale*_*uin 15

在dart中,您不能多次使用相同的方法/构造函数名称(即使使用不同的参数).

在您的情况下,您可以使用命名构造函数来定义2个构造函数:

class FirstClass {
  FirstClass() {}
  FirstClass.withA(a) {}
}
Run Code Online (Sandbox Code Playgroud)

或定义a为可选,并只保留一个构造函数:

class FirstClass {
  FirstClass([a]) {}
}
Run Code Online (Sandbox Code Playgroud)

  • 原因是 Dart 不是静态类型的,因此无法使用参数类型来区分/重载相同的方法/构造函数名称。 (3认同)