Questão nº 38

Questão de Tecnologia da Informação · FCC SEGEP-MA 2018 (nº 38)

FCC2018Analista Executivo - Programador de SistemasTecnologia da Informação
Gabarito: Cver comentário ↓

Considere uma aplicação com as classes Java abaixo, criadas em um ambiente de programação ideal.

```java
package pac2;
public class Processo {
private String numeroProcesso;
protected void setNumeroProcesso(String numeroProcesso) {
this.numeroProcesso = numeroProcesso;
}
}

package pac1;
import pac2.Processo;
public class Principal {
public static void main(String[] args) {
Processo p = new Processo();
p.setNumeroProcesso("2000.01.1.000001-5");
}
}
```

Ao compilar a aplicação, ocorrerá um erro que poderá ser resolvido se

Resposta comentada

Gabarito Alternativa C

Encapsulamento em Java é a prática de agrupar dados (atributos) e os métodos que operam sobre esses dados em uma única unidade (uma classe), controlando o acesso a eles através de modificadores de acesso.

  • (A) Incorreta: O tipo do atributo numeroProcesso (String ou int) não afeta a visibilidade ou acessibilidade do método setNumeroProcesso. O erro é de acesso, não de tipo de dado.
  • (B) Incorreta: A instrução import serve para referenciar classes de outros pacotes pelo nome simples, não para alterar as regras de acesso dos membros de uma classe. Importar Principal em Processo não resolveria o problema de acesso de Principal ao método protected de Processo.
  • (C) Correta: O método setNumeroProcesso é protected, o que significa que ele é acessível apenas dentro do mesmo pacote (pac2) ou por subclasses de Processo. Como a classe Principal está em um pacote diferente (pac1) e não é uma subclasse de Processo, ela não pode acessar o método protected. Ao trocar o modificador de acesso para public, o método se torna acessível de qualquer lugar, incluindo a classe Principal em pac1, resolvendo o erro de compilação.
  • (D) Incorreta: Java fornece um construtor padrão sem argumentos (public Processo()) automaticamente se nenhum construtor explícito for definido na classe. Portanto, a linha Processo p = new Processo(); não causaria erro de compilação. A armadilha aqui é desviar a atenção para a criação do objeto, quando o problema real está na chamada do método setNumeroProcesso.
  • (E) Incorreta: Mudar o método de protected para private o tornaria ainda menos acessível (apenas dentro da própria classe Processo), agravando o problema de acesso em vez de resolvê-lo.

Fonte: FCC SEGEP-MA 2018 Analista Executivo - Programador de Sistemas (Caderno Tipo 1). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho