该类没有默认构造函数

时间:2015-09-15 20:44:48

标签: dart

The class Task does not have a default constructor上的Webstorm错误GreatTask,我希望Task是`Task的默认构造函数。

我期待创建一个contract的{​​{1}},以便在Task后,对于列表中的每个成员Task.run() chain执行因为它是Task.chain[i]的成员,否则我期待Task

我想知道我应该首先纠正什么,Webstorm的代码或配置。

uncaught error

2 个答案:

答案 0 :(得分:6)

“默认构造函数”(在技术上)是您自己不添加任何构造函数时添加的构造函数。它将是YourClass(): super();

术语“默认构造函数”也常用于任何无名零参数生成构造函数。这就是这里的错误所说的。 因为GreatTask(this.chain);GreatTask(this.chain): super();相同而且超类Task没有super()引用的无名零参数生成构造函数,所以您有错误。

Günther的答案通过使GreatTask构造函数调用现有的Task(List list)构造函数而不是不存在的Task()构造函数来解决问题。

答案 1 :(得分:1)

@Kikerova是对的,我不知道为什么他删除了他的好答案。 如果添加自己的构造函数,则不再创建默认构造函数,并且需要显式调用或超级构造函数。

我假设您不想在子类中添加(覆盖)List chain;字段,因为超类已经包含它。如果要初始化超类的字段,则不能在构造函数参数列表中使用带有this.chain的短格式。

我认为这是你想要的:

class GreatTask extends Task {

 GreatTask(List chain) : super(chain);

  String hi() {
    return 'hi';
  }
}