我想做这样的事情
abstract class Foo {
def bar:String
def modifiedFoo:Foo = new Foo(){
override def bar = super.bar+"\n"
}
}
但这不合法("类Foo中的方法栏是从super访问的, 除非被声明为abstract的成员覆盖,否则它可能不是抽象的 并覆盖"其中只对Traits合法。
我可以移动方法modifiedFoo 使用签名modifiedFoo(foo:Foo)进入伴随对象,但这是 不太优雅。 你怎么处理这个问题?
答案 0 :(得分:2)
我认为您可以通过以下方式使用self
:
abstract class Foo {
self: Foo =>
def bar: String
def modifiedFoo: Foo = new Foo() {
override def bar = self.bar + "\n"
}
}