Окончательные методы не могут быть переопределены в подклассе. Но с магией 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
. Возможно ли это или этот метод "вроде переопределен"?