Pular para o conteúdo principal

Questão de Programação — Java — FGV 2024

ProgramaçãoJava
Código
fg077019
Banca
FGV
Órgão
CGE-PB
Ano
2024
Nível
Superior
Cargo
Auditor de Contas Públicas - Auditoria de Tecnologia da Informação
O desenvolvedor José implementou a classe CGEPrincipal em Java 17. A fim de tornar a implementação mais aderente ao modelo de domínio, José restringiu a herança da classe na declaração, especificando que a CGEPrincipal poderia ser herdada apenas pelas classes CGEUm e CGEDois.Para restringir a herança na declaração da classe CGEPrincipal, José utilizou a funcionalidade do Java 17:
  1. Areflection;
  2. Bstatic class;
  3. Csealed class;
  4. Dforeign function;
  5. Epattern matching.
Revelar gabarito e comentário

GabaritoC — sealed class;

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

Sealed classes em Java 17

Gabarito: letra C. A funcionalidade do Java 17 que permite restringir a herança de uma classe a um conjunto específico de subclasses é a sealed class (classe selada). Com o modificador sealed e a cláusula permits, o programador declara quais classes podem estender a superclasse, exatamente como José pretendia ao especificar que CGEPrincipal só poderia ser herdada por CGEUm e CGEDois.

Alternativa A — ❌ Incorreta

Reflection é um mecanismo para inspecionar e manipular classes, métodos e atributos em tempo de execução. Não serve para restringir a herança na declaração da classe.

Alternativa B — ❌ Incorreta

Static class em Java refere-se a uma classe aninhada estática, que não restringe a herança de sua classe externa. Não é o recurso adequado.

Alternativa C — ✅ Correta ⟵ GABARITO

Sealed class (introduzida no Java 17 pela JEP 409) permite que uma classe ou interface restrinja quais outras classes ou interfaces podem estendê-la ou implementá-la. A sintaxe é:

public sealed class CGEPrincipal permits CGEUm, CGEDois { ... }

Isso garante que apenas as classes listadas em permits possam herdar de CGEPrincipal.

Alternativa D — ❌ Incorreta

Foreign Function & Memory API (FFM API) é uma funcionalidade para interoperar com código e memória nativos (C/C++). Não tem relação com herança.

Alternativa E — ❌ Incorreta

Pattern Matching é um recurso que simplifica a verificação de tipos e a extração de dados em expressões instanceof e switch. Não controla a herança.

Gabarito: letra C (sealed class).

Link permanente: /questoes/fg077019