Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

O @Override é sempre necessário?

Na vídeo "Conta Corrente e Poupança", da aula "Herança e o uso construtores", tem a aplicação do @Override , que serve para que o método executado seja o da classe-filha e não da classe-mãe, pois ele foi modificado na classe-filha:

Na classe-mãe

public boolean saca(double valor) {
    if(this.saldo >= valor) {
      this.valor -= valor;
      return true;
    }
    return false;
}

Na classe-filha

@Override
public boolean saca(double valor) {
    valor += .03;
    return super.saca(valor);
}

Porém, no curso anterior, o mesmo foi feito sem utilizar o @Override e o método executado também foi o da classe-filha:

Na classe-mãe

public double getBonificacao() {
    return this.salario*.05;
}

Na classe-filha

public double getBonificacao() {
    return super.getBonificacao() + super.getSalario();
}

Por que o resultado foi igual com e sem o @Override? Esse foi um caso específico em que não faz diferença, enquanto há outros em que é necessário? Quais?

2 respostas

Sem o @Override o compilador entende que você está criando um novo método e com a implementação da annotation ele passa a entender que você está sobrescrevendo um método já existente, neste caso o método da classe mãe.

solução!

Fui pesquisar, e descobri que o @Override não é necessário, mas tê-lo ajuda o compilador a identificar que um método existente está sendo sobrescrito. Então, caso o nome do método esteja errado, ele indica um erro.