我有一个特征I
(中介),一个M
混合了特征的类(混合器)和一个特征S
(特定的)。
class M extends Something with S {
def baz() = foo()
}
trait I {
def foo(): { ...; bar(); ... }
def bar()
}
trait S extends I {
def bar() = 42
}
I
充当 和 之间的中间层M
,S
提供通用接口。
我有一个实现的方法foo
,I
它调用一个方法bar
(未实现I
但在那里定义)。我想要实现的是所有扩展的特征都I
必须实现bar
,这样会抛出编译时错误,因为bar
没有实现:
trait Z extends I
这在 Scala 中可行吗?
PS:我知道Force Scala trait 实现某种方法的答案,但我不想要那种显式耦合。