Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

Polimorfismo: Dúvida sobre a utilização dos métodos.

No vídeo de exemplo na introdução ao polimorfismo, o método Autentica não funcionou por não estar presente na classe de funcionários, mas o método getBonificacao usou os comandos da classe de gerente e nao do funcionario.

Neste caso, o getBonificacao nao deveria usar do funcionario também? Ou por ter a mesma assinatura, ele usa do gerente?

//Exemplo de código que testei
public class TestaReferencias {
    public static void main(String[] args) {
        Funcionario g1 = new Gerente();
        g1.setNome("Marcos Silva");
        g1.setSalario(6000);

        //deu erro
        //g1.autentica(2222);

        System.out.println(g1.getNome());
        System.out.println(g1.getBonificacao());
    }
}
1 resposta
solução

Olá Rodrigo, mas é exatamente isso que é o polimorfismo,

Invocar um método por meio de uma variável de superclasse e em tempo de execução, chamar a versão correta da subclasse

O método getBonificacaoalém de ter a mesma interface ele é implementado em Gerente. Por isso, o método executado será o da classe Gerente.

Caso este post tenha te ajudado, por favor, marcar como solucionado. Bons estudos! =)