Questão
ID 67309Disciplina: Tecnologia da Informação
Assuntos: Conceitos Básicos de Análise e Projeto OO, Hierarquia de Classes e Herança
Ano: 2025 Banca: PERFIL - ENADE Órgão: Terceiro Simulado Pnd
Em uma disciplina de Paradigmas de Linguagens de Programação, o professor está discutindo o conceito de 'polimorfismo', um dos pilares da programação orientada a objetos (POO). Ele quer que seus alunos compreendam como o polimorfismo permite escrever código mais flexível e extensível. Ele explica: "Polimorfismo, do grego 'muitas formas', é a capacidade de um objeto ser tratado como uma instância de sua classe pai, mas se comportar de acordo com sua classe específica. Em termos práticos, isso significa que podemos chamar o mesmo método em diferentes objetos e cada objeto responderá de uma maneira diferente, apropriada ao seu tipo. Isso é geralmente implementado através da sobrescrita de métodos (method overriding)." Para ilustrar, ele propõe um cenário de um jogo e apresenta um trecho de código em uma linguagem orientada a objetos (como Java ou C#):
``` abstract class Inimigo { public abstract void atacar(); } class Zumbi extends Inimigo { @Override public void atacar() { System.out.println("O Zumbi morde!"); } } class Esqueleto extends Inimigo { @Override public void atacar() { System.out.println("O Esqueleto atira uma flecha!"); } } // Em algum lugar do código principal... List inimigos = new ArrayList(); inimigos.add(new Zumbi()); inimigos.add(new Esqueleto()); inimigos.add(new Zumbi()); for (Inimigo inimigo : inimigos) { inimigo.atacar(); } ```
Qual será a saída do laço `for` e qual princípio da POO ele demonstra?