Pular para o conteúdo principal

Questão de Engenharia de Software — Orientação a Objetos — FCC 2016

Engenharia de SoftwareOrientação a Objetos
Código
fc033418
Banca
FCC
Órgão
TRT - 14ª Região (RO e AC)
Ano
2016
Nível
Médio
Cargo
Técnico Judiciário - Tecnologia da Informação
São, dentre outros, recursos essenciais em uma aplicação orientada a objetos para se obter polimorfismo:
  1. AHerança e sobrescrita de métodos.
  2. BClasses estáticas, com métodos protegidos.
  3. CInterfaces, contendo métodos não abstratos e implementados.
  4. DClasses abstratas, sem subclasses.
  5. EArrays unidimensionais ou multidimensionais.
Revelar gabarito e comentário

GabaritoA — Herança e sobrescrita de métodos.

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”.

Polimorfismo em Orientação a Objetos

Gabarito: letra A. O polimorfismo, um dos pilares da orientação a objetos, é alcançado principalmente por meio da herança combinada com a sobrescrita de métodos (overriding). A herança permite que uma subclasse seja tratada como sua superclasse, enquanto a sobrescrita redefine o comportamento de um método na subclasse, mantendo a mesma assinatura. Isso possibilita que objetos de diferentes classes respondam de formas distintas a uma mesma chamada de método, caracterizando o polimorfismo. O material de apoio define polimorfismo como:

Polimorfismo: "muitas formas". Permite uma subclasse ser referenciada como sua superclasse. Permite que classes derivadas de uma mesma superclasse tenham métodos de mesma assinatura, mas comportamentos diferentes. Ligação tardia (late binding) em tempo de execução.

E sobrescrita (overriding) como:

Subclasse reescreve/redefine um método da superclasse. Mesmo nome, mesma assinatura. Binding/ligação em tempo de execução.

Alternativa A — ✅ Correta ⟵ GABARITO

Herança e sobrescrita de métodos são os mecanismos essenciais para obter polimorfismo em uma aplicação orientada a objetos. Conforme o material, "Polimorfismo... permite que classes derivadas de uma mesma superclasse tenham métodos de mesma assinatura, mas comportamentos diferentes". Esse comportamento é viabilizado pela herança (relação de especialização) e pela sobrescrita (redefinição do método na subclasse).

Alternativa B — ❌ Incorreta

"Classes estáticas, com métodos protegidos" não são recursos essenciais para polimorfismo. Classes estáticas, por definição, não podem ser instanciadas nem estendidas, inviabilizando a relação de herança necessária ao polimorfismo. O modificador de acesso protegido (protected) é relevante para encapsulamento, mas não é suficiente para gerar polimorfismo. O erro está em confundir mecanismos de acesso com os pilares da POO.

Alternativa C — ❌ Incorreta

Interfaces são um meio de alcançar polimorfismo (por meio de implementações múltiplas), mas a afirmação é imprecisa. Dizer que as interfaces devem conter "métodos não abstratos e implementados" contraria a natureza clássica das interfaces, que possuem métodos abstratos (sem implementação). Mesmo com a introdução de default methods (Java 8+), a essência da interface continua sendo a definição de contratos abstratos. Além disso, a alternativa sugere que essa característica é essencial, o que não é verdade: o polimorfismo pode ser obtido com herança de classes abstratas ou concretas, dispensando interfaces. A alternativa falha por restringir erroneamente os recursos.

Alternativa D — ❌ Incorreta

"Classes abstratas, sem subclasses" é contraditório: uma classe abstrata só existe para ser estendida por subclasses; sem subclasses, não há herança e, consequentemente, não há polimorfismo. Classes abstratas podem ser usadas como base para polimorfismo, desde que haja subclasses concretas que implementem seus métodos abstratos. A ausência de subclasses inviabiliza completamente o polimorfismo.

Alternativa E — ❌ Incorreta

Arrays (unidimensionais ou multidimensionais) são estruturas de dados que armazenam coleções de elementos, mas não são recursos para obter polimorfismo. Eles podem armazenar objetos polimórficos (por exemplo, um array de tipo Animal que contém subclasses Cachorro e Gato), mas o array em si não é um mecanismo que viabiliza o polimorfismo; ele apenas o utiliza. Portanto, está fora do escopo da pergunta.

Gabarito: letra A — herança e sobrescrita de métodos são os recursos essenciais para o polimorfismo.

Link permanente: /questoes/fc033418