【问题标题】:Is it possible to create Dart class extensions that implement or override inherited methods?是否可以创建实现或覆盖继承方法的 Dart 类扩展?
【发布时间】:2021-10-28 05:49:07
【问题描述】:

我想使用代码生成器为应该实现一些样板方法的类创建扩展,但显然我不能:)

示例代码:

abstract class Base {
   foo(int param) { print("Base::foo $param"); }
}

class Derived extends Base {
  
}

extension DerivedWithFoo on Derived {
  foo(int param) { print("Derived::foo $param");}
}

void main() {
 final d = Derived();
 d.foo(5); 
}

输出:

Base::foo 5

看起来扩展方法调用以某种方式提前绑定?

谢谢。

【问题讨论】:

标签: dart extension-methods


【解决方案1】:

真的不行,

但使用 mixin

abstract class Base {
  foo(int param) { print("Base::foo $param"); }
}

mixin MyMixin {
  foo(int param) { print("Mixin::foo $param");}
}

class Derived extends Base with MyMixin {
}

void main() {
  final d = Derived();
  d.foo(5);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-16
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2012-09-27
    • 1970-01-01
    • 2013-12-19
    • 1970-01-01
    相关资源
    最近更新 更多