最终方法不能在子类中重写。但是凭借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