Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Por que usar um tipo de variável mais genérico?

Boa noite pessoal!! Estou com uma dúvida, entendi o conteúdo, está tudo okay, porém, ainda não entendi a vantagem de usar ou não uma variável mais genérica. Por exemplo... Por que usar e por que seria melhor usar

Funcionario gerente = new Gerente();

em vez de

Gerente gerente = new Gerente();

Não sei se fui claro mas essa é a dúvida, rsrsrs Obrigado desde já galera!!

1 resposta
solução!

A prática de utilização do polimorfismo se torna vantajoso quando precisamos de delegar ações em comum ao todo. E com isso podemos reutilizar código.

Usando esse mesmo exemplo, suponha que precisamos somar os salários de todas as pessoas da empresa: Gerente, Funcionário, Chefe, Presidente, e por ai vai.

Ao invés de:

List<Gerente> gerentes =  // Recupera todos os gerentes
List<Chefe> chefes =  // Recupera todos os chefes
List<Secretaria> secretarias =  // Recupera todas secretarias
double somaGerente = 0;
for(Gerente gerente : gerentes) {
    somaGerente += gerente.getSalario();
}
double somaChefe = 0;
for(Chefe chefe :  chefes) {
    somaChefe += chefe.getSalario();
}
double somaSecretaria = 0;
for(Secretaria secretaria :  secretarias) {
    somaSecretaria += secretaria.getSalario();
}

double somaTotal = somaGerente + somaChefe + somaSecretaria;
System.out.println("Soma salario: " +  somaTotal);

Podemos reduzir utilizando polimorfismo, considerando que Chefe, Secretaria e Gerente herdam de Funcionário, e que Funcionario tem saldo em comum:

List<Funcionario> funcionarios =  // Recupera todos os funcionarios (chefes, secretarias, gerentes)

double somaTotal = 0;
for(Funcionario funcionario :  funcionarios) {
    somaTotal += funcionario.getSalario();
}

System.out.println("Soma salario: " +  somaTotal);

Viu como ficou mais simples o segundo exemplo? Qualquer dúvida é só falar. Bons estudos!