FC ConcursosFC Concursos

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

  1. o atributo numeroProcesso for trocado de String para int.
  2. antes da declaração da classe Processo for incluída a instrução import pac1.Principal;.
  3. o método setNumeroProcesso for trocado de protected para public.
  4. for criado um construtor explícito na classe Processo, necessário para se instanciar o objeto p na classe Principal.
  5. 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

Continue aprendendo