inheritance - Dart 继承和 super 构造函数

标签 inheritance dart super

我正在尝试定义一个抽象父类 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/

相关文章:

flutter - Flutter中如何使用Column在屏幕中间显示文本?

flutter - Flutter:在其他有状态的小部件中更新字符串

firebase - 不实时加载值

java - 通用 super 参数

javascript - Javascript 类中实例化时的自执行函数

c++ - 用户定义的构造函数重载与参数父类(super class)的重载参数不匹配

java - 在抽象类中创建方法而不是在扩展它的类中重写它们是一个好习惯吗?

java - 如何在Java中的Lambda函数中调用父类中的方法?

java - 子类中使用super打印父类(super class)字段

java - 在 Java 编译时检查组合与继承约束