【发布时间】:2021-04-17 14:18:50
【问题描述】:
我想在我的飞镖中初始化超级构造函数。我想要的代码是这样的:
class ChildClass extends ParentClass{
ChildClass(){
var startNumber = 4;
var endNumber = 8;
super(startNumber, endNumber);
}
}
但是,它在 dart 代码中不起作用。
备选方案 1:
class ChildClass extends ParentClass{
ChildClass() : super(4,8);
}
备选方案 1 的问题在于它不是干净的代码。 4和8是什么?
备选方案 2:
class ChildClass extends ParentClass{
int sNumber = 4;
int eNumber = 8;
ChildClass() : super(sNumber, eNumber);
}
备选方案 2 的问题在于字段 sNumber 和 eNumber 是多余的,因为如果该字段是公共的,我们可以使用来自 ParentClass 的 startNumber 和 endNumber
备选方案 3:
class ChildClass extends ParentClass{
ChildClass({Int startNumber = 4, int endNumber = 8}) : super(startNumber, endNumber);
}
替代方案 3 的问题是我们可以更改参数 startNumber 和 endNumber 的值
如何在明确传递值的含义的同时调用超级构造函数?
【问题讨论】:
-
请不要使用明确表示“请勿使用”的标签。
标签: dart constructor super