我想使用可堆叠特质模式使用单例对象,但我似乎找不到如何让编译器满意:
abstract class Pr {
def pr()
}
trait PrePostPr extends Pr {
abstract override def pr() {
println("prepr")
super.pr()
println("postpr")
}
}
object Foo extends Pr with PrePostPr {
def pr() = println("Foo")
}
尝试在 repl 中对此进行评估会产生以下错误:
<console>:10: error: overriding method pr in trait PrePostPr of type ()Unit;
method pr needs `override' modifier
def pr() = println("Foo")
可以,但是像这样:
abstract class Pr {
def pr()
}
trait PrePostPr extends Pr {
abstract override def pr() {
println("prepr")
super.pr()
println("postpr")
}
}
class ImplPr extends Pr {
def pr() = println("Foo")
}
object Foo extends ImplPr with PrePostPr
该实现必须存在于超类/超特征之一中。抽象修改特征必须位于继承列表中具有实现的类/特征之后。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)