最终方法不能在子类中覆盖。但是借助Scala的魔力,似乎这是可能的。
考虑以下示例:
trait Test {
final def doIt(s: String): String = s
}
object TestObject extends Test {
def doIt: String => String = s => s.reverse
}
对象
doIt
中的方法TestObject
与特征doIt
中的Test
具有不同的签名。因此doIt
被重载而不是被覆盖。但是,对doIt
的常规调用始终会调用TestObject
中的方法:val x = TestObject.doIt("Hello") //> x : String = olleH
题:
如何在
doIt
上调用原始方法TestObject
。这可能吗,还是该方法“被覆盖”? 最佳答案
您可以像这样将TestObject
用作Test
:
(TestObject: Test).doIt
关于scala - 覆盖 final方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20453243/