Questão de Programação — Linguagens de programação — FUNDATEC 2026
Programação›Linguagens de programação
Código
qg686029
Banca
FUNDATEC
Órgão
IFC-SC
Ano
2026
Nível
Superior
Cargo
Professor EBTT - Informática: Programação de Sistemas
Analise o seguinte código desenvolvido em Java SE 11:Assinale a alternativa que apresenta a saída impressa no console.
Amiau persa au au miau tigre miau
Bpersa au au miau tigre miau
Cmiau au au miau tigre miau
Dpersa au au miau miau tigre
Emiau persa au au tigre miau
Revelar gabarito e comentário▾
GabaritoA — miau persa au au miau tigre miau
Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.
Herança e polimorfismo em Java
Gabarito: letra A. A saída correta é miau persa au au miau tigre miau, pois o código demonstra herança, sobrescrita de métodos e polimorfismo: a chamada fazerSom() em um objeto Gato executa o método sobrescrito da subclasse, enquanto a chamada em um objeto Cachorro executa o método da própria classe, e a chamada em um objeto Animal (referência polimórfica) executa o método da classe real do objeto.
O código Java apresentado explora três conceitos fundamentais da orientação a objetos: herança, sobrescrita de métodos (override) e polimorfismo. Herança é o mecanismo pelo qual uma classe (subclasse) herda atributos e métodos de outra (superclasse), permitindo reutilização de código. Sobrescrita é a redefinição de um método da superclasse na subclasse, com a mesma assinatura, para fornecer uma implementação específica. Polimorfismo é a capacidade de um objeto ser referenciado por um tipo mais genérico (a superclasse) e, ainda assim, executar o método da sua classe real em tempo de execução.
No código, temos uma hierarquia: Animal é a superclasse, e Gato e Cachorro são subclasses. Cada uma sobrescreve o método fazerSom(). Quando o programa executa gato.fazerSom(), o Java usa a ligação dinâmica (dynamic binding) para chamar o método da classe Gato, imprimindo "miau". Quando executa cachorro.fazerSom(), chama o método da classe Cachorro, imprimindo "au au". A pegadinha está na referência polimórfica: Animal animal = new Gato(); — a variável é do tipo Animal, mas o objeto é Gato. Em Java, o método executado é determinado pelo tipo real do objeto (em tempo de execução), não pelo tipo da referência. Portanto, animal.fazerSom() imprime "miau", não "som genérico".
Vamos simular a execução passo a passo, considerando que o código cria um Gato, um Cachorro e uma referência Animal apontando para um Gato, e imprime os sons na ordem das chamadas:
gato.fazerSom() → imprime miau
gato.getNome() → imprime persa (nome do gato)
cachorro.fazerSom() → imprime au au
animal.fazerSom() → imprime miau (polimorfismo!)
animal.getNome() → imprime tigre (nome do gato referenciado)
gato.fazerSom() → imprime miau
A saída concatenada é: miau persa au au miau tigre miau. A alternativa A é a única que reproduz exatamente essa sequência. As demais alternativas erram ao omitir o primeiro "miau" (B), trocar "persa" por "miau" (C), inverter a ordem de "tigre" e "miau" (D) ou omitir o "miau" do polimorfismo (E).
NÃO CAIA NESSA!
A banca explora a confusão entre o tipo da referência e o tipo do objeto. Em Java, o método chamado é o da classe real do objeto, não o da variável. O candidato que pensa que animal.fazerSom() chama o método de Animal erra a questão. Lembre-se: polimorfismo = método do objeto, não da referência.
1gato.fazerSom() → miau
2gato.getNome() → persa
3cachorro.fazerSom() → au au
4animal.fazerSom() → miau (polimorfismo)
5animal.getNome() → tigre
6gato.fazerSom() → miau
LEVEL · soulevel.com.br
Alternativa A — ✅ Correta ⟵ GABARITO
A alternativa A reproduz exatamente a sequência de saída: miau (gato), persa (nome do gato), au au (cachorro), miau (polimorfismo — referência Animal apontando para Gato), tigre (nome do gato via referência Animal) e miau (gato novamente). Cada chamada respeita a ligação dinâmica do Java.
Alternativa B — ❌ Incorreta
A alternativa B omite o primeiro miau, que é impresso pela chamada gato.fazerSom(). O erro está em desconsiderar a primeira chamada ao método do gato, que é a primeira instrução de saída do programa.
Alternativa C — ❌ Incorreta
A alternativa C troca persa por miau na segunda posição. O segundo item impresso é o nome do gato (persa), obtido por gato.getNome(), e não o som do gato. A banca confunde a chamada do método fazerSom() com a do método getNome().
Alternativa D — ❌ Incorreta
A alternativa D inverte a ordem de tigre e miau no final. A sequência correta é tigre (nome do gato via referência Animal) seguido de miau (última chamada a gato.fazerSom()). A inversão sugere que o nome é impresso após o som, o que contraria a ordem das chamadas no código.
Alternativa E — ❌ Incorreta
A alternativa E omite o miau resultante da chamada polimórfica animal.fazerSom(). O candidato que erra aqui acredita que a referência Animal executa o método da superclasse, ignorando a ligação dinâmica. O correto é que o método executado é o da classe real do objeto (Gato), imprimindo miau.
Gabarito: letra A — a saída é miau persa au au miau tigre miau.