Anotação Java @Override

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.