Questão FC373298
Considere uma aplicação com as classes Java abaixo, criadas em um ambiente de programação ideal. package pac2; public class Processo { private String numeroProcesso; protected void
Linguagens de Programação
FCC · 2018
Considere uma aplicação com as classes Java abaixo, criadas em um ambiente de programação ideal.
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
- o atributo numeroProcesso for trocado de String para int.
- antes da declaração da classe Processo for incluída a instrução import pac1.Principal;.
- o método setNumeroProcesso for trocado de protected para public.
- for criado um construtor explícito na classe Processo, necessário para se instanciar o objeto p na classe Principal.
- o método setNumeroProcesso for trocado de protected para private.
Mostrar resposta e comentário
Gabarito
Certo
Comentário do professor
O erro ocorre porque o método setNumeroProcesso está declarado como protected em pac2.Processo e é chamado de uma classe (pac1.Principal) que não está no mesmo pacote nem é subclasse de Processo.
Em Java, o modificador protected permite acesso apenas a classes do mesmo pacote e a subclasses (mesmo que estas estejam em outro pacote). Uma classe fora do pacote que não herda não tem visibilidade para invocar métodos protegidos.
Ao trocar o modificador para public, o método passa a ter visibilidade universal, ou seja, qualquer classe, independentemente do pacote, pode chamá-lo. Essa alteração resolve o erro de compilação e permite que Principal execute p.setNumeroProcesso(...).
Conteúdo do catálogo FC Concursos · Atualizado em