Comrelação ao programa anterior, é correto afirmar que:

Próximas questões
Com base no mesmo assunto
Q113169 Algoritmos e Estrutura de Dados

01  class Prova{
02  public int a;
03
04  Prova(int _a){
05  a = _a;
06  }
07  public void acrescenta(int n){
08  a += n;
09  }
10  public void acrescenta(){
11  a++;
12  }
13  }
14  class SubProva extends Prova{
15  private int b;
16  SubProva(int umb, int uma){
17  super(uma);
18  b = umb;
19  }
20  public void acrescenta(int n){
21  b=b+n+2;
22  }
23  public static void main (String args[ ]) {
24  SubProva s = new SubProva(2,5);
25  Prova p = new Prova(2);
26  s.acrescenta(3);
27  p.acrescenta();
28  System.out.println(s.b+s.a);
29  System.out.println(p.a);
30  s.acrescenta();
31  System.out.println(" "+s.b+p.a+s.a) ;
32  }
33 }

Comrelação ao programa anterior, é correto afirmar que:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa Correta: E

Vamos entender esta questão de forma clara e didática.

O enunciado apresenta duas classes: Prova e SubProva. A classe SubProva estende a classe Prova, o que significa que herda suas características, mas também pode adicionar ou modificar comportamentos próprios.

Na linha 24, temos a criação de um objeto SubProva com os valores (2,5). O construtor de SubProva chama o construtor da superclasse Prova com a = 5 e inicializa b = 2.

Na linha 26, o método acrescenta é chamado com o argumento 3. Este método é sobrescrito em SubProva para adicionar o valor n + 2 ao valor de b. Portanto, b passa a ser 2 + 3 + 2 = 7.

Na linha 27, o método acrescenta sem argumentos é chamado para o objeto p. Este método incrementa a em 1, então p.a passa de 2 para 3.

Na linha 28, o valor impresso é a soma de s.b e s.a. Temos s.b = 7 e s.a = 5. Portanto, a saída será 7 + 5 = 12.

Agora vamos justificar as alternativas incorretas:

A - não é possível acessar o campo s.b, pois ele é um campo privado:
Embora o campo b seja privado, ele está sendo acessado dentro da própria classe SubProva, onde a privacidade não impede o acesso. Portanto, esta opção está incorreta.

B - a linha 28, ao executar o programa, a saída será 75:
Esta alternativa está incorreta, pois os valores são somados, não concatenados. s.b + s.a resulta em 12, não 75.

C - a linha 28, ao executar o programa, a saída será 7,5:
Esta alternativa está incorreta, pois os valores são somados. s.b + s.a resulta em 12, não 7,5.

D - a linha 28, ao executar o programa, a saída será 10:
Esta alternativa está incorreta, pois o cálculo correto é 7 (s.b) + 5 (s.a) = 12, não 10.

E - a linha 28, ao executar o programa, a saída será 12:
Esta é a alternativa correta. Conforme explicado, s.b é 7 e s.a é 5, resultando em 12.

Espero que esta explicação tenha esclarecido a questão. Se houver mais dúvidas, estarei à disposição para ajudar!

Clique para visualizar este gabarito

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

Comentários

Veja os comentários dos nossos alunos

Essa questão está errada,não? b é um atributo privado. Não poderia ser acessado por s.b.

Não, poderia ser acessado por s.b porque o método main que acessa a variável privada s.b está dentro da própria classe SubProva, então é o próprio método (main) da subclasse SubProva que acessa a variável s.b, e isso pode.

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo