JavaPOOintermediario

Herança com polimorfismo

Em sistemas de RH reais, funcionários têm diferentes regras de cálculo de salário (comissionados, horistas, etc.). Em vez de escrever condicionais enormes com instanceof, você usa polimorfismo: uma única lista de Funcionario chama o método getSalario() de cada um, e o Java executa a versão correta automaticamente. Isso elimina if desnecessários e torna o código extensível — novo tipo de funcionário só precisa estender a superclasse.

O PROBLEMA

Funcionario e Gerente com bônus. ArrayList mista calcula folha.

EXEMPLO

Folha total calculada com polimorfismo

SOBRE O CONCEITO

Polimorfismo com herança permite tratar objetos de classes derivadas (Gerente) como objetos da superclasse (Funcionario), mas o método executado é o da classe real do objeto. O erro comum é não sobrescrever getSalario() em Gerente: sem @Override, o método da superclasse é chamado, ignorando o bônus. Aí a folha fica errada. A anotação @Override avisa o compilador se você não estiver realmente redefinindo o método. Use super.getSalario() dentro do @Override para reaproveitar o cálculo base e depois adicionar o bônus. Com ArrayList<Funcionario> e um loop for-each, você chama getSalario() polimorficamente — sem instanceof.

RESOLUÇÃO

Mais exercícios de POO

JAP004 · BásicoMétodo com retornoJAP005 · BásicoMúltiplos objetosJAP011 · IntermediárioHerança simplesJAP002 · BásicoConstrutor
Ver todos os exercícios de Java