L''''overriding''' (in inglese ''sovrascrittura'') corrisponde a un'operazione completamente diversa: consente di ridefinire un metodo in una sottoclasse, in modo che il metodo originale e quello che lo ridefinisce hanno necessariamente la stessa firma, e solo a tempo di esecuzione si determina quale dei due deve essere eseguito. Ad esempio:
<source lang=java>
public class ClassePadre {
public void print(){
System.out.println("Classe padre");
}
}
class ClasseFiglio extends ClassePadre{
@Override
public void print() {
System.out.println("Classe figlio");
}
public static void main(String[] args) {
ClassePadre padre = new ClassePadre();
ClassePadre figlio = new ClasseFiglio();
padre.print();
figlio.print();
}
}
</source>
La classe Figlio ridefinisce il metodo print() della classe padre e ne cambia il comportamento.