是否可以创建实现或覆盖继承方法的Dart类扩展?

zbdgwd5y  于 2023-01-06  发布在  其他
关注(0)|答案(1)|浏览(138)

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

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); 
}

输出:
第一个月
看起来像是扩展方法调用被提前绑定了?
谢谢。

xqk2d5yq

xqk2d5yq1#

你不能用extension来做这个。
您可以尝试使用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);
}

输出:
Mixin::foo 5

相关问题