覆盖setter并调用继承的setter

时间:2014-03-26 12:15:33

标签: dart

我有点困惑:我可以覆盖一个setter / getter但仍然使用super setter / getter吗?如果是 - 怎么样?

用例:

class A {
  void set value(num a) {
    // do something smart here
  }
}

class B extends A {
  void set value(num a) {
    // call parent setter and then do something even smarter
  }
}

如果不可能,那么仍然可以保留API但扩展新类中的逻辑。代码的用户已经使用了instance.value = ...所以我不想将其更改为方法调用。

请帮助:)

2 个答案:

答案 0 :(得分:9)

只需要调用 super.value = a

class A {
  void set value(String value) {
    print(value.toUpperCase());
  }
}

class B extends A {

  void set value(String value) {
    super.value = value;
    print(value.toLowerCase());
  }
}

void main() {
  B b = new B();
  b.value = "Hello World";
}

答案 1 :(得分:7)

您可以使用super.访问父级:

class B extends A {
  void set value(num a) {
    super.value = a;
  }
}