É correto afirmar que:

Próximas questões
Com base no mesmo assunto
Q113174 Programação
Analise o seguinte programa em JAVA e responda às questões 56 e 57.

01  class Circulo
02  {
03  private double raio;
04  public Circulo(double r)
05  {
06  raio = r;
07  }
08  public void setRaio(double r)
09  {
10  raio = r;
11  }
12  public double getRaio( )
13  {
14  return raio;
15  }
16  }
17  public classTeste
18  {
19  private static final Circulo roda = new Circulo(5.0);
20  public static void main (String args[ ])
21  {
22  System.out.println(“Raio = “ + roda.getRaio( ));
23  roda.setRaio(7.0);
24  System.out.println(“Novo raio = ”+ roda.getRaio( ));
25  }
26 }

É correto afirmar que:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: E - a linha 19 instancia um objeto final da classe Circulo.

Para compreender a questão e identificar a alternativa correta, é necessário entender alguns conceitos da linguagem de programação Java. Vamos analisar os conceitos relevantes e o motivo pelo qual a alternativa E é a correta:

A palavra-chave final em Java é utilizada para definir uma constante, ou seja, uma vez atribuído um valor a uma variável declarada como final, não é possível alterar esse valor posteriormente. No contexto de objetos, quando uma referência é declarada como final, isso significa que a referência não pode ser alterada para apontar para um outro objeto, mas o estado interno do objeto apontado por essa referência ainda pode ser modificado (a menos que seus campos também sejam final).

Na linha 19 do código fornecido:

19  private static final Circulo roda = new Circulo(5.0);

temos a declaração de uma referência final para um objeto da classe Circulo. A palavra-chave private indica que a variável roda só pode ser acessada dentro da classe Teste, e static significa que roda é uma variável de classe, compartilhada entre todas as instâncias de Teste. O objeto do tipo Circulo é instanciado com o valor de raio 5.0, e a partir deste ponto, não é permitido fazer roda referenciar outro objeto, mas é perfeitamente legal chamar métodos que modificam o estado do objeto ao qual roda se refere, como é feito na linha 23 com o método setRaio(7.0).

As outras alternativas estão incorretas pelos seguintes motivos:

  • A: A classe Circulo só possui atributos privados, o que pode ser verificado na linha 03.
  • B: A linha 23 não apresentará erro de compilação, pois está alterando o estado do objeto e não a referência que é final.
  • C: A saída do programa será 'Raio = 5.0' seguido por 'Novo raio = 7.0', já que o raio é alterado pelo método setRaio.
  • D: Não haverá erro de execução na linha 10, pois a instrução está alterando o valor de um atributo do objeto e não a referência final.

Portanto, a alternativa correta é a E, pois descreve corretamente o comportamento da linha 19: a criação de uma referência final de um objeto da classe Circulo.

Clique para visualizar este gabarito

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