class Shape {
String color;
void draw() {
print('Draw Random Shape');
}
}
class Rectangle implements Shape {
@override
void draw() {
print('Draw Rectangle');
}
}
现在的问题是我收到警告,说
我知道dart中的每个实例变量都隐式地有自己的getter和setter。但是在使用接口(interface)的情况下,我该如何解决此问题。我也试图查看一些关于stackoverflow的类似问题,但它们没有帮助。
最佳答案
Dart不会从implements Shape
继承实现,而仅声明Rectangle
符合Shape
的接口(interface)。
您需要在String color;
中添加Rectangle
才能满足implements Shape
。
您可以通过添加字段,或者添加getter和setter来实现。从类的界面 Angular 来看,两者都是等效的。
class Rectangle implements Shape {
String color;
@override
void draw() {
print('Draw Rectangle');
}
}
要么
class Rectangle implements Shape {
String _color;
String get color => _color;
set color(String value) => _color = value;
@override
void draw() {
print('Draw Rectangle');
}
}
如果getter和setter仅转发到没有其他代码的私有(private)字段,则后者被认为是较差的样式。
关于dart - 缺少Getter和Setter的具体实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53756164/