访问dart中的继承字段

Dan*_*son 1 dart

abstract class Painter {

    CanvasElement canvas;

    Painter(this.canvas);

    void draw();
}

class SpritePainter extends Painter{

    SpritePainter(this.canvas);

    void draw(){
        window.console.log("Drawing");
        window.console.log(canvas);
    }

}
Run Code Online (Sandbox Code Playgroud)

使用上面的代码我的应用程序在尝试调用new SpritePainter(query('#sprite-canvas'));this.canvas是一个未知字段时失败.我认为CanvasElement抽象父类可以访问子类吗?

更新:

我修复了这个:

SpritePainter(CanvasElement canvas):super(canvas);
Run Code Online (Sandbox Code Playgroud)

但后来我读到飞镖教程,抽象类只能有工厂构造函数?

Ale*_*uin 7

您必须将您的参数转发给超级构造函数,如下所示:

abstract class Painter {
  CanvasElement canvas;

  Painter(this.canvas);

  void draw();
}

class SpritePainter extends Painter{
  SpritePainter(CanvasElement canvas) : super(canvas);

  void draw(){
    window.console.log("Drawing");
    window.console.log(canvas);
  }
}
Run Code Online (Sandbox Code Playgroud)