Anotação Java @Override
1. Visão geral
Neste tutorial rápido, daremos uma olhada em como usar a anotação@Override.
2. @Override Anotação
Em uma subclasse, podemosoverride or overload métodos de instância. A substituição indica que a subclasse está substituindo o comportamento herdado. Sobrecarga é quando uma subclasse está adicionando novo comportamento.
Às vezes, sobrecarregaremos acidentalmente quando na verdade pretendíamos substituir. É fácil cometer este erro em 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));
}
}
Surpreendentemente, o teste acima falha. Isso ocorre porque este métodoequals está sobrecarregandoObject#equals, não o substituindo.
Podemos usar a anotação@Override em métodos herdados para nos proteger desse erro.
Neste exemplo, podemos adicionar a anotação@Override acima do métodoequals:
@Override
public boolean equals(Machine obj) {
return true;
}
Neste ponto, o compilador irá gerar um erro, informando-nos que não estamos substituindoequals como pensamos.
Então, podemos corrigir nosso erro:
@Override
public boolean equals(Object obj) {
return true;
}
Por causa da facilidade de sobrecarregar acidentalmente,it’s a common recommendation to use the @Override annotation on all inherited methods.
3. Conclusão
Neste guia, vimos como a anotação @Override funciona em Java.
O código-fonte completo dos exemplos pode ser encontradoover on GitHub.