2017-02-04 97 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

相關問題