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/

10-09 03:22