1
resposta

[Dúvida] Polimorfismo

Como na imagem abaixo eu troquei a referencia pra uma genérica como "funcionário" mas enquadrei como gerente , só que os métodos expecificos de gerente não compilam

Insira aqui a descrição dessa imagem para ajudar na acessibilidade x ss

1 resposta

Olá Rodrigo, tudo bem?

O polimorfismo em permite que um objeto de uma classe específica seja tratado como um objeto de uma classe mais genérica, ou seja, uma classe pai. Isso é útil quando você tem vários objetos que compartilham características semelhantes, mas que têm comportamentos específicos diferentes.

No seu exemplo, você criou um objeto do tipo Gerente e atribuiu-o a uma variável do tipo Funcionario, que é uma classe pai. Isso funciona porque um objeto Gerente também é um objeto Funcionario, já que a classe Gerente herda da classe Funcionario. No entanto, se você tentar chamar um método específico do Gerente na referência do Funcionario, o compilador não vai permitir porque ele só sabe que está trabalhando com um objeto Funcionario, que não tem o método específico do Gerente.

Para resolver esse problema, você pode usar o downcasting, que é a conversão da referência genérica de volta para a referência específica. Por exemplo, se você quiser chamar o método getBonificacao() específico do Gerente:

Funcionario f = new Gerente();
double bonificacao = ((Gerente) f).getBonificacao();

O operador (Gerente) é usado para fazer a conversão da referência genérica f para a referência específica Gerente. Depois disso, você pode chamar o método getBonificacao() normalmente.