最終方法不能在子類中重寫。但是憑藉Scala的魔力,這似乎是可能的。重寫最終方法
考慮下面的例子:
trait Test {
final def doIt(s: String): String = s
}
object TestObject extends Test {
def doIt: String => String = s => s.reverse
}
在對象TestObject
方法doIt
具有不性狀Test
相同的簽名doIt
。因此doIt
被重載而不是被重載。但要doIt
正常通話總是調用TestObject
方法:
val x = TestObject.doIt("Hello") //> x : String = olleH
問題: 我怎樣才能呼籲TestObject
原來的方法doIt
。這是可能的還是這種方法「重寫」?
爲什麼斯卡拉視它爲不同的簽名?是因爲第一是方法,第二是功能? – SzymonPajzert