【发布时间】:2020-12-11 01:50:40
【问题描述】:
以下代码无效,因为无法从扩展 BaseClass 的类的构造函数中初始化 this.base1:
abstract class BaseClass{
String base1;
}
class MyClass extends BaseClass{
int i1;
MyClass(this.base1, this.i1);
}
两者都必须做
abstract class BaseClass{
String base1;
BaseClass(this.base1);
}
class MyClass extends BaseClass{
int i1;
MyClass(String base1, this.i1) : super(base1);
}
或
abstract class BaseClass{
String base1;
}
class MyClass extends BaseClass{
int i1;
MyClass(String base1, this.i1){
this.base1 = base1;
}
}
使用mixin 而不是抽象基类也不会让我这样做。但是,我发现有一种方法-通过在实现类中重新声明该字段:
abstract class BaseClass{
String base1;
}
class MyClass extends BaseClass{
String base1;
int i1;
MyClass(this.base1, this.i1);
}
这是标准做法吗,或者在这样做时应该注意哪些陷阱?
【问题讨论】:
标签: inheritance dart polymorphism