Is it possible to create Dart class extensions that implement or override inherited methods?

Viewed 765

I'd like to use code generators that create extensions for classes that should implement some boilerplate methods, but apparently I cannot :)

Sample code:

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

Output:

Base::foo 5

It looks like that extension method calls are somehow early bound?

Thanks.

1 Answers

really don't work,

but work with 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);
}

Related