Pular para o conteúdo principal

Questão de Programação — Programação Orientada a Objetos — Avança SP 2024

ProgramaçãoProgramação Orientada a Objetos
Código
qg078063
Banca
Avança SP
Órgão
CISBRA - SP
Ano
2024
Nível
Superior
Cargo
Analista em T.I
O polimorfismo, um dos principais componentes da programação orientada a objetos, compıe diversas características que constituem o desenvolvimento de aplicações, tais como:I) As subclasses de uma classe podem definir seus próprios comportamentos exclusivos.II) As subclasses de uma classe podem compartilhar algumas das mesmas funcionalidades de uma superclass.III) As subclasses podem ser executadas independentemente de classes maiores.São citadas características válidas do polimorfismo em:
  1. AI, II e III.
  2. Bapenas III.
  3. CI e II.
  4. DI e III.
  5. EII e III.
Revelar gabarito e comentário

GabaritoC — I e II.

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 na Programação Orientada a Objetos

Gabarito: letra C. O polimorfismo, um dos pilares da POO, permite que subclasses definam comportamentos exclusivos (sobrescrita/override) e compartilhem funcionalidades da superclasse (herança), mas não implica que subclasses sejam executadas independentemente de classes maiores — elas dependem da hierarquia de herança. Portanto, apenas as afirmativas I e II são válidas.

O polimorfismo é um conceito fundamental da programação orientada a objetos, que significa literalmente "muitas formas" (do grego poli = muitas, morphos = formas). Na prática, ele permite que objetos de classes diferentes respondam ao mesmo método de maneiras distintas, ou que uma referência de um tipo mais abstrato (superclasse) possa apontar para objetos de tipos mais concretos (subclasses). Isso é possível graças à herança, que estabelece uma relação "é-um" entre classes, e ao mecanismo de ligação tardia (late binding), que decide em tempo de execução qual implementação do método será chamada.

Existem quatro tipos principais de polimorfismo, conforme a literatura clássica:

Tipo

Categoria

Descrição

Inclusão (override)

Universal

Uma referência da superclasse aponta para uma instância da subclasse, que redefine o método (sobrescrita). É o polimorfismo dinâmico.

Paramétrico

Universal

Uso de generics ou templates para escrever código que funciona com qualquer tipo.

Sobrecarga (overload)

Ad-Hoc

Métodos com o mesmo nome, mas assinaturas diferentes (parâmetros diferentes). É o polimorfismo estático.

Coerção (casting)

Ad-Hoc

Conversão implícita ou explícita de um tipo em outro.

A afirmativa I está correta porque, por meio da sobrescrita (override), uma subclasse pode fornecer uma implementação específica de um método herdado, definindo seu próprio comportamento. A afirmativa II também está correta, pois a herança garante que a subclasse compartilhe os métodos e atributos da superclasse, podendo utilizá-los diretamente ou estendê-los. Já a afirmativa III está incorreta: as subclasses dependem da superclasse na hierarquia de herança — elas não são executadas "independentemente de classes maiores". A independência total contraria o próprio princípio da herança, que estabelece uma relação de dependência estrutural.

A pegadinha desta questão está em confundir o polimorfismo com a independência total entre classes. O polimorfismo promove o desacoplamento entre objetos que usam as classes, mas as subclasses permanecem acopladas à superclasse pela relação de herança. Guarde essa distinção: é exatamente nela que as alternativas se dividem.

1Tipos
Inclusão (override)
Paramétrico (generics)
Sobrecarga (overload)
Coerção (casting)
2Mecanismos
Herança (compartilha funcionalidades)
Sobrescrita (comportamento exclusivo)
3Dependência
Subclasse acoplada à superclasse
Desacoplamento entre quem usa
Polimorfismo
LEVELsoulevel.com.br
Polimorfismo: Tipos (Inclusão (override), Paramétrico (generics), Sobrecarga (overload), Coerção (casting)); Mecanismos (Herança (compartilha funcionalidades), Sobrescrita (comportamento exclusivo)); Dependência (Subclasse acoplada à superclasse, Desacoplamento entre quem usa)

Item I — ✅ Correto

As subclasses podem definir seus próprios comportamentos exclusivos. Isso é a essência da sobrescrita (override), um dos mecanismos do polimorfismo por inclusão. A subclasse herda os métodos da superclasse, mas pode redefini-los para atender às suas necessidades específicas. Por exemplo, uma classe Animal pode ter o método emitirSom(), e as subclasses Cachorro e Gato o sobrescrevem para emitir sons diferentes.

Item II — ✅ Correto

As subclasses compartilham funcionalidades da superclasse por meio da herança. Esse compartilhamento é a base do polimorfismo: como a subclasse é um tipo da superclasse (relação "é-um"), ela pode ser tratada como tal, e os métodos herdados podem ser invocados de forma polimórfica. Isso permite reutilização de código e extensibilidade.

Item III — ❌ Incorreto

As subclasses não podem ser executadas independentemente de classes maiores. A herança cria uma dependência estrutural: a subclasse depende da superclasse para herdar seus membros. Sem a superclasse, a subclasse não existe como tal. A afirmativa confunde o desacoplamento promovido pelo polimorfismo (entre quem usa as classes) com a relação de dependência interna da hierarquia de herança.

NÃO CAIA NESSA!

A banca explora a confusão entre o desacoplamento que o polimorfismo proporciona aos clientes das classes e a dependência interna entre subclasse e superclasse. O polimorfismo permite que o código que usa as classes seja mais flexível e independente, mas as subclasses continuam acopladas à superclasse pela herança. Fique atento: "independência" no contexto de POO quase sempre se refere ao desacoplamento entre objetos que se comunicam, não à relação de herança.

Gabarito: letra C — corretos apenas os itens I e II.

Link permanente: /questoes/qg078063