2017-02-04 73 views
0

我想要做这样的事情重写抽象方法,而使用

abstract class Foo { 

    def bar:String 
    def modifiedFoo:Foo = new Foo(){ 
     override def bar = super.bar+"\n" 
    } 
} 

的方法,但是这是不合法的(“类Foo中的方法杆从超级访问, 它可能不是抽象的,除非它被声明为摘要 的成员覆盖,并覆盖“哪个inturn只对traits合法”)。

我可以将modifiedFoo 的方法移动到带有签名modifiedFoo(foo:Foo)的伴随对象中,但这是 不那么优雅。 你如何处理这个问题?

回答

2

我想你可以通过以下方式使用self

abstract class Foo { 

    self: Foo => 

    def bar: String 

    def modifiedFoo: Foo = new Foo() { 
    override def bar = self.bar + "\n" 
    } 

} 
+0

感谢,这有助于 – gcc

相关问题