Comr elação ao programa anterior, é correto afirmar que a li...

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

Comr elação ao programa anterior, é correto afirmar que a linha 29, ao executar o programa, a saída será:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Gabarito: Alternativa D

Vamos analisar a questão para entender por que a alternativa correta é a D. Este problema envolve orientação a objetos, herança e sobrescrita de métodos. Para resolvê-lo, é necessário compreender como esses conceitos interagem no código.

O código fornecido define duas classes: Prova e SubProva, onde SubProva herda de Prova. Vamos detalhar a execução do código passo a passo:

Na linha 24, criamos uma instância de SubProva chamada s com umb = 2 e uma = 5. Isso chama o construtor de SubProva que, por sua vez, chama o construtor de Prova com uma = 5. Assim, s.a = 5 e s.b = 2.

Na linha 25, criamos uma instância de Prova chamada p com _a = 2. Portanto, p.a = 2.

Na linha 26, chamamos s.acrescenta(3). Este método está sobrescrito em SubProva e executa b = b + n + 2. Portanto, s.b = 2 + 3 + 2 = 7.

Na linha 27, chamamos p.acrescenta(). Este método incrementa p.a em 1. Assim, p.a = 2 + 1 = 3.

Na linha 28, o código imprime s.b + s.a. Sabemos que s.b = 7 e s.a = 5. Portanto, a saída é 7 + 5 = 12, mas a linha 29 não tem relação com essa etapa.

Na linha 29, o código imprime p.a. Após a linha 27, p.a foi incrementado para 3. Portanto, a saída é 3, justificando a alternativa correta D.

Agora, vamos justificar as alternativas incorretas:

A - 4: Esta alternativa está incorreta porque p.a se torna 3 após a chamada do método p.acrescenta().

B - 1: Esta alternativa está incorreta, pois p.a foi inicializado com 2 e incrementado para 3 na linha 27.

C - 2: Esta alternativa está incorreta, pois p.a foi incrementado de 2 para 3.

E - 0: Esta alternativa está incorreta porque p.a nunca foi 0; foi inicializado com 2.

Espero que esta explicação tenha sido clara e útil. Se você tiver mais dúvidas ou precisar de mais detalhes, estou à disposição para ajudar!

Clique para visualizar este gabarito

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