Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 为抽象类中的方法提供默认实现_Dart - Fatal编程技术网

Dart 为抽象类中的方法提供默认实现

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 =

在下面的示例中,我希望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 => 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