Observe a classe abaixo:
class Movel{
public void andar(Movel veiculo){
System.out.println("andou...");
}
}
Partindo do princípio, a anotação @Override serve para indicar que o método anotado por ela é um método sobrescrito de super-classe. Vamos criar uma classe Carro que irá estender a classe acima:
class Carro extends Movel{
public void andar(Carro veiculo){
System.out.println("o carro andou...");
}
}
Não há problemas no meu código. Mas há um detalhe. Com essa abordagem, eu estarei sobrecarregando o método ao invés de sobrescrever. Observe a sua assinatura. O método da super-classe recebe um Movel, enquanto seu método filho recebe um Carro. Minha intenção foi sobrescrever o método da classe pai, porém eu acabei esquecendo a sua assinatura e troquei o tipo do seu parâmetro. Agora vamos anotar o método com @override.
class Carro extends Movel{
@Override
public void andar(Carro veiculo){
System.out.println("o carro andou...");
}
}
Em tempo de compilação, ele já avisa:
The method andar(Movel) of type Movel must override or implement a supertype method.Concluindo, use consistentemente a anotação @Override (Java Efetivo: item 36) para prevenir-se de sobrescrita inválida e indesejada de métodos da super-classe.
Nenhum comentário:
Postar um comentário