Java @Override Annotation

1. Panoramica

In questo breve tutorial, daremo un'occhiata a come utilizzare l' annotazione @Override .

2. @Override Annotazione

In una sottoclasse, possiamo sovrascrivere o sovraccaricare i metodi di istanza. L'override indica che la sottoclasse sta sostituendo il comportamento ereditato. Il sovraccarico è quando una sottoclasse aggiunge un nuovo comportamento.

A volte, sovraccaricheremo accidentalmente quando effettivamente intendevamo eseguire l'override. È facile commettere questo errore in Java:

public class Machine { public boolean equals(Machine obj) { return true; } @Test public void whenTwoDifferentMachines_thenReturnTrue() { Object first = new Machine(); Object second = new Machine(); assertTrue(first.equals(second)); } }

Sorprendentemente, il test di cui sopra fallisce. Questo perché questo metodo equals sta sovraccaricando Object # equals , non sovrascrivendolo.

Possiamo usare l' annotazione @Override sui metodi ereditati per proteggerci da questo errore.

In questo esempio, possiamo aggiungere l' annotazione @Override sopra il metodo equals :

@Override public boolean equals(Machine obj) { return true; }

A questo punto, il compilatore solleverà un errore, informandoci che non stiamo sostituendo uguali come pensiamo.

Quindi, possiamo correggere il nostro errore:

@Override public boolean equals(Object obj) { return true; }

A causa di quanto sia facile sovraccaricare accidentalmente, è una raccomandazione comune utilizzare l' annotazione @Override su tutti i metodi ereditati.

3. Conclusione

In questa guida, abbiamo visto come funziona l'annotazione @Override in Java.

Il codice sorgente completo per gli esempi può essere trovato su GitHub.