假设我有一些trait
个,每个都会向扩展Actor
的类添加一些行为。
它们每个都需要Actor
上的一小部分方法。他们都可以像这样延长Actor
吗?
trait A extends Actor {
def doAThing = { ... }
}
trait B extends Actor {
def doBThing = { ... }
}
trait C extends Actor {
def doCThing = { ... }
}
class D extends Actor with A with B with C
或者每个特征是否应该将Actor
所需的方法定义为抽象方法,以便它们由最终的具体类提供,这是唯一一个将扩展Actor
的方法?
答案 0 :(得分:6)
继承
trait A extends Actor
表示A
为Actor
。另一种方法是使用self-types
trait B {
self: Actor =>
}
表示B
需要混合Actor
。
有关详细信息,请参阅linked question。