Dart 为抽象类中的方法提供默认实现
在下面的示例中,我希望sum getter返回8,但这是一个编译错误Dart 为抽象类中的方法提供默认实现,dart,Dart,在下面的示例中,我希望sum getter返回8,但这是一个编译错误 Class 'B' has no instance getter 'sum'. 根据规范: 使用抽象类而不是接口具有重要意义 优势。抽象类可以提供默认实现;信息技术 还可以提供静态方法,无需服务 类,例如集合或列表,其全部目的是分组 与给定类型相关的实用程序 提供加x和y的sum的默认实现的正确方法是什么 abstract class A { int get x; int get y; int get sum =
Class 'B' has no instance getter 'sum'.
根据规范:
使用抽象类而不是接口具有重要意义
优势。抽象类可以提供默认实现;信息技术
还可以提供静态方法,无需服务
类,例如集合或列表,其全部目的是分组
与给定类型相关的实用程序
提供加x和y的sum的默认实现的正确方法是什么
abstract class A {
int get x;
int get y;
int get sum => x+y;
}
class B implements A {
int get x => 3;
int get y => 5;
}
main() {
B b = new B();
print(b.x);
print(b.sum); // Not working, why not 8?
}
您必须使
B
扩展A
而不是实施
抽象类A{
int得到x;
int得到y;
int get sum=>x+y;
}
B类扩展了A类{
int得到x=>3;
int得到y=>5;
}
main(){
B=新的B();
印刷品(b.x);
打印(b.sum);//显示8
}
或者,如果由于您的类可能已经扩展了其他类而不想使用extends,则可以使用:
抽象类M{
int得到x;
int得到y;
int get sum=>x+y;
}
甲级{
字符串s=“s”;
}
B类用M扩展了A{
int得到x=>3;
int得到y=>5;
}
main(){
B=新的B();
印刷(理学学士);
印刷品(b.x);
打印(b.sum);//显示8
}
如果M还扩展了其他类,则不能使用mixin