Posiadam podstawową klasę abstrakcyjną (cechę). Ma abstrakcyjną metodę: foo()
. Jest rozszerzany i implementowany przez kilka klas pochodnych. Chcę utworzyć cechę, która może być mieszana z klasami pochodnymi, tak aby implementowała foo()
, a następnie wywołuje klasy pochodnej: foo()
.Zastępowanie cech i metod abstrakcyjnych w Scali
Coś jak:
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
Próbowałem rodzajów i typów strukturalnych własny, ale nie mogę zmusić go do pracy.