我做了这个抽象类
abstract class API {
//* ---- abstract fields , Methods ---- *//
int? timeOut;
int? getTimeOut();
}
然后我用一个类来实现它并使其成为最终的
class GetData implements API {
@override
final int? timeOut;
GetData(int? ta) : timeOut = ta;
@override
int? getTimeOut() {
return timeOut;
}
@override
set timeOut(int? _timeOut) {
timeOut = _timeOut;
}
}
所以我的问题是,即使类有构造函数,如果我不实现 setter,为什么会出现错误?
在 Dart 中,非
final
字段隐式相当于提供具有该字段名称的 getter 和 setter。 final
字段隐式相当于提供一个没有 setter 的 getter。
因此,您的基类提供了一个带有 getter 和 setter 的接口。但是,当您尝试使用派生类中的
final
字段覆盖它时,您不再提供隐式 setter,现在您的派生类将不再实现基类所需的接口(因此派生类将不再提供可替代,其中需要基类)。这是不允许的,因此您会收到编译时错误。