O desenvolvedor José implementou a classe CGEPrincipal em Ja...

Próximas questões
Com base no mesmo assunto
Q2398320 Programaçã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:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: C - sealed class

A questão aborda um recurso introduzido no Java 17 conhecido como classes seladas (sealed classes). Este conceito é um mecanismo de controle de herança que permite ao desenvolvedor definir quais outras classes podem herdar de uma classe selada. Isso é útil quando se quer ter um controle mais rigoroso sobre a hierarquia de classes, garantindo que apenas um conjunto específico de classes possa estender a classe selada.

Para resolver essa questão, é necessário entender os seguintes conceitos:

  • O que são classes seladas no Java e como elas são declaradas.
  • Os benefícios de restringir a herança e como isso pode tornar a implementação mais próxima do modelo de domínio projetado.

As classes seladas são declaradas utilizando a palavra-chave sealed, seguida pela palavra-chave permits, que especifica quais outras classes podem estender a classe selada. Por exemplo:

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

A resposta correta é a alternativa C porque sealed class é exatamente a funcionalidade do Java que permite restringir a herança de uma maneira que se ajuste ao modelo de domínio, conforme mencionado no enunciado. José utilizou essa funcionalidade para indicar que apenas as classes CGEUm e CGEDois podem herdar de CGEPrincipal, garantindo assim o controle sobre a extensão da classe.

As outras alternativas não representam corretamente a funcionalidade utilizada para restringir a herança de classes no Java 17:

  • Reflection (Alternativa A) é um recurso que permite inspecionar e modificar o comportamento de classes, métodos e interfaces em tempo de execução.
  • Static class (Alternativa B) se refere a uma classe aninhada estática que não tem acesso à instância da classe exterior.
  • Foreign function (Alternativa D) não é um conceito relacionado diretamente com a herança de classes no Java.
  • Pattern matching (Alternativa E) é um recurso que permite verificar se um objeto corresponde a um determinado padrão, mas não está relacionado à restrição de herança de classes.

Clique para visualizar este gabarito

Visualize o gabarito desta questão clicando no botão abaixo

Comentários

Veja os comentários dos nossos alunos

Para restringir a herança na declaração da classe CGEPrincipal em Java 17, o desenvolvedor José utilizou a funcionalidade chamada "sealed class". Portanto, a opção correta é:

C) sealed class

Reflection, em poucas palavras, serve para determinar métodos e atributos que serão utilizados de determinada classe (que você nem conhece) em tempo de execução. 

Static Class é uma classe que não pode ser instanciada. Ou seja, não podemos criar objetos de uma classe estática. Só podemos acessar seus membros usando o próprio nome da classe.

Sealed Class, As classes seladas (sealed classes) permitem um controle mais preciso sobre quais classes podem estender ou implementar uma classe específica. Isso ajuda a reforçar o encapsulamento e a estrutura do código.

Foreign Function e memory API, para interagir de forma mais eficiente com código nativo e manipulação de memória. Isso é útil em cenários de programação de baixo nível, mas requer cuidado para garantir a segurança. 

Pattern Matching, propõe usá-lo com a instrução do Switch, como um recurso de pré-visualização

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo