Nel tuo caso particolare, hai ricevuto una risposta completa da axel22. Voglio solo aggiungere che c'è almeno un altro caso in cui potresti incontrare un modificatore di override. La parola chiave può anche essere utilizzata con i metodi tratti.
Immaginate di avere una classe astratta:
abstract class Writer {
def print(str: String)
}
e la sua attuazione concreta che consente di stampare su una console
class ConsoleWriter extends Writer {
def print(str: String) = println(str)
}
Ora, si vuole creare un tratto che modificherà il suo comportamento. Osserva la seguente implementazione:
trait Uppercase extends Writer {
abstract override def print(str: String) =
super.print(str.toUpperCase())
}
Si noti che un metodo ha due modificatori: abstract e override.Ciò è consentito solo per i caratteri e significa che il tratto deve essere miscelato in qualche classe che ha una definizione concreta del metodo in questione
Con la definizione di cui sopra, si può fare:
val writer = new ConsoleWriter with Uppercase
writer.print("abc")
che sarà cedere il risultato
ABC
Molto nello stesso vano, è possibile aggiungere altri tratti:
trait WithSpaces extends Writer {
abstract override def print(str: String) =
super.print(str.split("").mkString(" ").tail)
}
Ora, quando si chiama
val writer = new ConsoleWriter with Uppercase with WithSpaces
writer.print("abc")
si vedrà:
ABC
L'utilizzo al di sopra di un modificatore override in tratti è una caratteristica distintiva in scala e non lo vedrà in Giava.
Questo è corretto solo se il metodo che è stato sostituito è astratto, vedere la risposta axel22 s. Inoltre, entrambi i collegamenti sono irrilevanti perché si applicano a Java e C++, non a Scala in particolare. – Cubic
Cubico, non importa se il metodo sovrascritto è astratto, questo può cambiare nel tempo. Il cambiamento dell'interfaccia, l'override aiuta a rimanere in sintonia. – ArtemGr
La risposta implica che la parola chiave override si comporti come l'annotazione '@ Override' in Java. Questo è corretto solo quando si superano i metodi astratti. – Cubic