在下面的示例中,我希望 sum getter将返回8,但这是编译错误。
Class 'B' has no instance getter 'sum'.
根据规范:
使用抽象类而不是接口很重要 好处。抽象类可以提供默认实现;它 还可以提供静态方法,不需要服务 集合或列表等类,其目的是分组 与给定类型相关的实用程序。
提供添加x和y的和的默认实现的正确方法是什么?
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?
}
答案 0 :(得分:4)
您必须B
扩展 A
而不是工具。
abstract class A {
int get x;
int get y;
int get sum => x+y;
}
class B extends A {
int get x => 3;
int get y => 5;
}
main() {
B b = new B();
print(b.x);
print(b.sum); // displays 8
}
或者,如果您不想使用 extends ,因为您的课程可能已经扩展了其他课程,您可以使用mixins:
abstract class M {
int get x;
int get y;
int get sum => x+y;
}
class A {
String s = "s";
}
class B extends A with M {
int get x => 3;
int get y => 5;
}
main() {
B b = new B();
print(b.s);
print(b.x);
print(b.sum); // displays 8
}