我正在尝试定义一个抽象父类 Event
和一个具体的子类 PlaceChangeEvent
:
abstract class Event {
String name;
DateTime occurredAt;
int handleCount;
Event(this.name, this.occurredAt, [this.handleCount = 0]);
}
class PlaceChangeEvent implements Event {
Place place;
PlaceChangeEvent(Place place) : super(place.name, DateTime.now());
}
PlaceChangeEvent
给了我 2 个编译器警告:
- 首先是类名本身:
缺少继承的成员:'Event.name'、'Event.handleCount'和'Event.occurredAt'
- 第二个是对
super
的调用:预期有 0 个位置参数,但找到了 2 个
我哪里出错了,我能做些什么来解决这个问题?我的意图是:
- 使用
place.name
对父级的name
进行硬编码;和 - 使用当前日期/时间硬编码父级的
occurredAt
属性';和 - 通过不提供父级的可选
handleCount
属性将其初始化为 0。
最佳答案
您可能希望从 Event
类扩展而不是实现它:
class PlaceChangeEvent extends Event {
Implements的意思是,你的类实现了类的接口(interface),但不继承它的成员,你需要自己实现。您会收到有关 super 构造函数的警告,因为您仍然从 Object
而不是 Event
扩展,并且 Object
没有带有两个参数的构造函数。
关于inheritance - Dart 继承和 super 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20859472/