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)
但后来我读到飞镖教程,抽象类只能有工厂构造函数?
您必须将您的参数转发给超级构造函数,如下所示:
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)
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |