JavaPOOintermediario

Polimorfismo

Em sistemas reais, como editores gráficos ou jogos, você frequentemente precisa manipular uma lista de objetos de tipos diferentes (círculos, quadrados, triângulos) que compartilham uma mesma operação, como calcular área. Sem polimorfismo, você teria que verificar o tipo de cada objeto com instanceof e chamar métodos específicos, o que torna o código verboso e difícil de estender. Com polimorfismo, você pode percorrer um ArrayList<Forma> e chamar area() diretamente em cada elemento, independentemente da forma concreta, permitindo adicionar novas formas sem modificar o código de cálculo.

O PROBLEMA

Forma, Circulo e Quadrado. ArrayList<Forma> com área total.

EXEMPLO

Total área: 94.27

SOBRE O CONCEITO

Polimorfismo é a capacidade de objetos de classes diferentes responderem ao mesmo método de maneira específica. Neste exercício, Forma é a superclasse (ou interface) que declara o método area(). Circulo e Quadrado herdam de Forma e sobrescrevem area() com suas próprias implementações (por exemplo, return Math.PI * raio * raio e return lado * lado). O erro comum é usar instanceof para verificar o tipo e depois fazer um cast: isso quebra o propósito do polimorfismo e torna o código rígido. Em vez disso, basta percorrer o ArrayList<Forma> com um for-each e somar o valor de forma.area(). O Java decide automaticamente qual implementação de area() chamar com base no tipo real do objeto em tempo de execução. O uso de @Override garante que você está realmente sobrescrevendo o método da superclasse, evitando erros de digitação.

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