Em aulas anteriores vimos a utilização da anotação override, cuja a finalidade é garantir que a classe-filha esteja especificando a funcionalidade de um método existente em sua superclasse. Se a classe-filha não utiliza o @Override acima de seu método, então este método é um método própria da classe, e não o método da superclasse, certo?
Pois bem, nessa aula fomos introduzidos ao conceito de método abstrato:
//não pode instanciar essa classe, pq é abstrata
public abstract class Funcionario {
private String nome;
private String cpf;
private double salario;
//metodo sem corpo, nao ha implementacao
public abstract double getBonificacao(); //ESSE AQUI
public String getNome() {
return nome;
}
//Código omitido
Peguemos a classe-filha a seguir como exemplo:
public class Designer extends Funcionario {
public double getBonificacao() {
System.out.println("Chamando o método de bonificacao do Designer");
return 200;
}
}
Minha dúvida é: na classe-filha não temos a anotação override que define que a classe-filha está especificando o método getBonificacao(). Por que nesse caso não precisamos fazer o @Override?