I have a base abstract class (trait). It has an abstract method foo()
. It is extended and implemented by several derived classes. I want to create a trait that can be mixed into the derived classes so that it implements foo()
and then calls the derived class s foo()
.
Something like:
trait Foo {
def foo()
}
trait M extends Foo {
override def foo() {
println("M")
super.foo()
}
}
class FooImpl1 extends Foo {
override def foo() {
println("Impl")
}
}
class FooImpl2 extends FooImpl1 with M
I tried self types and structural types, but I can t get it to work.