Com relação às duas classes anteriores pode-se dizer que:

Próximas questões
Com base no mesmo assunto
Q113168 Programação

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 }

Com relação às duas classes anteriores pode-se dizer que:
Alternativas

Gabarito comentado

Confira o gabarito comentado por um dos nossos professores

Alternativa correta: D - existe sobrecarga no método acrescenta;

No contexto da programação, especialmente em linguagens orientadas a objeto como Java, sobrecarga (ou overloading em inglês) é um conceito pelo qual dois ou mais métodos em uma mesma classe podem ter o mesmo nome, desde que suas listas de parâmetros sejam diferentes em número, tipo ou sequência de tipos de parâmetros. Isso permite que o mesmo método tenha comportamentos diferentes, dependendo dos argumentos passados na chamada.

Analisando o código fornecido, vemos que na classe Prova são definidos dois métodos com o nome acrescenta. O primeiro método acrescenta(int n) (linhas 07-09) espera um parâmetro inteiro, enquanto o segundo método acrescenta() (linhas 10-12) não espera nenhum parâmetro e simplesmente incrementa a variável a em uma unidade. A presença desses dois métodos distintos na mesma classe, mas com diferentes listas de parâmetros, é um exemplo clássico de sobrecarga.

As demais alternativas podem ser refutadas da seguinte maneira:

  • Alternativa A: O método main aparece apenas uma vez e, portanto, não pode estar sobrecarregado.
  • Alternativa B: A classe SubProva tem apenas um construtor e, por isso, não há sobrecarga de construtores nela.
  • Alternativa C: A classe Prova tem apenas um construtor e, novamente, não há sobrecarga de construtores nela.
  • Alternativa E: Como já explicado, a sobrecarga ocorre com o método acrescenta na classe Prova.

Portanto, a única justificativa verdadeira é a que se refere à sobrecarga do método acrescenta, o que corresponde à alternativa D.

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

Primeiramente temos que saber o que é sobrecarga de métodos

 

Sobrecarga de método permite a existência de vários métodos de mesmo nome, porém com assinaturas levemente diferentes ou seja variando no número, tipo de argumentos , no valor de retorno e até variáveis diferentes. Ficará a cargo do compilador escolher de acordo com as listas de argumentos os procedimentos ou métodos a serem executados.

 

  a) ERRADO. Não existe sobrecarga no método main;

  b) ERRADO. Não existe sobrecarga no método SubProva;

  c) ERRADO. Não existe sobrecarga no método Prova;

  d) CORRETO. Existe sobrecarga no método acrescenta; São três métodos com o mesmo nome, são eles:  public void acrescenta(int n),  a += n;  public void acrescenta(), a++; public void acrescenta(), b=b+n+2;

  e) ERRADO. Existe sobrecarga no método acrescenta;

Clique para visualizar este comentário

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