DEV Community

Java Efetivo (livro)
Java Efetivo (livro)

Posted on

Item 40: Use a anotação Override com frequência

Importância da Anotação @override*

  • A anotação @override é uma das mais importantes para programadores Java.
  • Usada nas declarações de método para indicar que o método sobrescreve uma declaração em um supertipo.
  • Protege contra bugs ao garantir que métodos sejam corretamente sobrescritos.

Problema com Sobrecarga vs. Sobrescrita

  • Exemplo de código com problema Erro: O método equals está sobrecarregado em vez de sobrescrito. Para sobrescrever, o parâmetro deve ser do tipo Object. Ver Bigram.java

Correção com @override

  • Código corrigido: ver Bigram.java

Image description

Resultado: O compilador alertará se houver erros na sobrescrita, ajudando a corrigir problemas de sobrecarga acidental.

Uso em Classes e Interfaces
Use @override para métodos que sobrescrevem métodos em superclasses e superinterfaces.

Exemplo em interface:

public interface Set<E> extends Collection<E> {
    @Override boolean add(E e); // Sobrescreve o método add de Collection
}
Enter fullscreen mode Exit fullscreen mode

Vantagens em IDEs

  • IDEs podem gerar avisos se um método sobrescrevendo outro não estiver anotado com @override.
  • Ajuda a evitar sobrescritas involuntárias e sobrecargas acidentais.

Exceções à Regra

  • Em classes concretas que sobrescrevem métodos abstratos de superclasses, o compilador emitirá um erro se não houver sobrescrita correta, então a anotação não é estritamente necessária, mas ainda pode ser útil.

Resumo

  • Sempre use a anotação @override para indicar métodos que sobrescrevem declarações em supertipos.
  • Ajuda a evitar erros comuns e facilita a manutenção do código.
  • Mesmo em casos onde não é estritamente necessário, como métodos abstratos em classes concretas, o uso de @override é uma boa prática.

Exemplo Final
Classe concreta com métodos anotados:
ver ConcreteClass.java

Image description

Interface com métodos anotados:

Image description

Essa abordagem de usar @override frequentemente protege contra bugs, facilita a manutenção e melhora a clareza do código.

Top comments (0)