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);
}
}
使用上面的代码,我的应用程序在尝试调用 new SpritePainter(query('#sprite-canvas'));
时失败,表示 this.canvas
是未知的 field 。我以为子类可以访问抽象父类中的 CanvasElement
?
更新:
我用以下方法解决了这个问题:
SpritePainter(CanvasElement canvas):super(canvas);
但后来我在 dart 教程上读到抽象类只能有工厂构造函数?
最佳答案
你必须像下面这样将你的参数转发给 super 构造函数:
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);
}
}
关于dart - 访问 Dart 中的继承字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972546/