Sobre a variável raio na linha 3 do programa, pode-se dizer ...

Próximas questões
Com base no mesmo assunto
Q113175 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 }

Sobre a variável raio na linha 3 do programa, pode-se dizer que:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: A - por ser um atributo privado, ele só pode ser acessado pelos métodos da própria classe.

Para entender a alternativa correta, é importante conhecer o conceito de encapsulamento em programação orientada a objetos, um dos pilares fundamentais do Java. Encapsulamento é a técnica de ocultar os detalhes de implementação de uma classe, expondo apenas o que é necessário para o uso da classe por outras partes do código.

No contexto da questão, o atributo raio da classe Circulo é declarado como private, o que significa que ele só pode ser acessado diretamente dentro da própria classe Circulo. Isso é uma aplicação direta do encapsulamento, permitindo que a classe controle como esse atributo é acessado e modificado. Os métodos setRaio(double r) e getRaio() são os métodos públicos fornecidos para permitir a manipulação segura do atributo raio.

A alternativa correta (A) está correta justamente porque respeita o princípio do encapsulamento. Os outros métodos da classe Circulo podem acessar e modificar o atributo raio porque fazem parte da mesma classe, mas qualquer tentativa de acesso direto ao atributo raio a partir de outras classes resultaria em um erro de compilação, a não ser que esse acesso seja feito por meio dos métodos públicos de acesso (getters/setters).

Vamos ver brevemente por que as outras alternativas não são corretas:

  • B - Especializações da classe (subclasses) não têm acesso direto a atributos privados de suas superclasses. Elas precisariam de métodos de acesso (como getters/setters) para isso.
  • C - Atributos privados são herdados por especializações (subclasses), mas não podem ser acessados diretamente por elas; ainda assim, eles existem nas subclasses.
  • D - Não é uma regra que um atributo privado deva receber um valor no construtor; isso é uma decisão de design baseada na necessidade da classe.
  • E - Métodos de qualquer tipo de visibilidade (private, public, etc.) dentro da mesma classe podem acessar atributos privados, não apenas métodos privados.

Entendendo esses conceitos, fica mais fácil identificar a correta aplicação do encapsulamento e a visibilidade dos atributos dentro de uma classe em Java.

Clique para visualizar este gabarito

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