class 没有默认构造函数
The class does not have a default constructor
GreatTask
上的 Webstorm 错误 The class Task does not have a default constructor
,我希望 Task
是 `Task.
的默认构造函数
我期待创建一个 Task
的 contract
,这样在 Task.run()
之后,列表中的每个成员 chain
Task.chain[i]
因为它是 Task
的成员而被执行,否则我期望 uncaught error
.
我想知道我应该首先纠正什么,代码或Webstorm的配置。
abstract class Task {
List chain;
Task(this.chain);
void run() {
this.chain.forEach((el) => this.el());
}
}
class GreatTask extends Task {
List chain;
GreatTask(this.chain);
String hi() {
return 'hi';
}
}
@Kikerova 说的对,我不知道他为什么删掉了他的好答案。
如果您添加自己的构造函数,则不再创建默认构造函数,您需要显式调用 或超级构造函数。
我假设您不想在子class 中添加(覆盖)List chain;
字段,因为超级class 已经包含它。如果你想初始化 super class 的字段,你不能在构造函数参数列表中使用带有 this.chain
的短格式。
我假设这就是你想要的:
class GreatTask extends Task {
GreatTask(List chain) : super(chain);
String hi() {
return 'hi';
}
}
"default constructor" 是(技术上)如果您自己不添加任何构造函数时添加的那个。它将是 YourClass(): super();
.
术语 "default constructor" 也常用于任何无名称零参数生成构造函数。这就是这里的错误所说的。
因为 GreatTask(this.chain);
与 GreatTask(this.chain): super();
相同,并且超类 Task
没有供 super()
引用的无名称零参数生成构造函数,所以您会出错。
Günther 的回答通过使 GreatTask
构造函数调用现有的 Task(List list)
构造函数而不是不存在的 Task()
构造函数来解决问题。
GreatTask
上的 Webstorm 错误 The class Task does not have a default constructor
,我希望 Task
是 `Task.
我期待创建一个 Task
的 contract
,这样在 Task.run()
之后,列表中的每个成员 chain
Task.chain[i]
因为它是 Task
的成员而被执行,否则我期望 uncaught error
.
我想知道我应该首先纠正什么,代码或Webstorm的配置。
abstract class Task {
List chain;
Task(this.chain);
void run() {
this.chain.forEach((el) => this.el());
}
}
class GreatTask extends Task {
List chain;
GreatTask(this.chain);
String hi() {
return 'hi';
}
}
@Kikerova 说的对,我不知道他为什么删掉了他的好答案。 如果您添加自己的构造函数,则不再创建默认构造函数,您需要显式调用 或超级构造函数。
我假设您不想在子class 中添加(覆盖)List chain;
字段,因为超级class 已经包含它。如果你想初始化 super class 的字段,你不能在构造函数参数列表中使用带有 this.chain
的短格式。
我假设这就是你想要的:
class GreatTask extends Task {
GreatTask(List chain) : super(chain);
String hi() {
return 'hi';
}
}
"default constructor" 是(技术上)如果您自己不添加任何构造函数时添加的那个。它将是 YourClass(): super();
.
术语 "default constructor" 也常用于任何无名称零参数生成构造函数。这就是这里的错误所说的。
因为 GreatTask(this.chain);
与 GreatTask(this.chain): super();
相同,并且超类 Task
没有供 super()
引用的无名称零参数生成构造函数,所以您会出错。
Günther 的回答通过使 GreatTask
构造函数调用现有的 Task(List list)
构造函数而不是不存在的 Task()
构造函数来解决问题。