Questão nº 38

Questão de Tecnologia da Informação · FCC PGE-AM 2022 (nº 38)

FCC2022Técnico em Gestão Procuratorial - Especialidade Engenharia de SoftwareTecnologia da Informação
Gabarito: Ever comentário ↓

Considere o trecho de programa Java abaixo.

```java
public class Calcular {
public double reajuste(double salario, double percentual) {
return salario + salario percentual / 100;
}
public double reajuste(double salario) {
return salario
1.30;
}
public static double reajuste(float salario) {
return salario * 0.20;
}
}
```

É correto afirmar que

Resposta comentada

Gabarito Alternativa E

Sobrecarga de métodos (ou overloading) é quando uma classe possui vários métodos com o mesmo nome, mas que se diferenciam pela quantidade ou tipo dos seus parâmetros. Isso permite que o mesmo nome de método realize ações ligeiramente diferentes dependendo dos dados que recebe.

(A) Incorreta: O trecho de código mostra um exemplo de sobrecarga de métodos (overloading), não de sobrescrita (overriding). Sobrescrita ocorre quando uma subclasse redefine um método de sua superclasse com a mesma assinatura. A armadilha aqui é confundir os termos "sobrecarga" e "sobrescrita", que são conceitos distintos em programação orientada a objetos.
(B) Incorreta: Não há erro no último método ser estático. Métodos estáticos pertencem à classe e podem ser sobrecarregados como qualquer outro método, desde que suas assinaturas sejam únicas.
(C) Incorreta: A chamada `Calcular.reajuste(sal)` tenta invocar um método estático. Com `double sal = 1000.5;`, o tipo de `sal` é `double`. Não existe um método `static reajuste(double)` na classe `Calcular`. O método `static double reajuste(float salario)` não pode ser invocado diretamente com um `double` sem uma conversão explícita, pois `double` não é implicitamente convertido para `float` (pode haver perda de precisão).
(D) Incorreta: É permitido, e é uma prática comum, criar vários métodos com o mesmo nome em Java, desde que suas listas de parâmetros (assinaturas) sejam diferentes. Isso é exatamente o que chamamos de sobrecarga de métodos.
(E) Correta: A declaração `float sal = (float) 1000.5;` cria uma variável `sal` do tipo `float`. A chamada `Calcular.reajuste(sal)` então invoca o método `public static double reajuste(float salario)` porque o tipo do argumento (`float`) corresponde exatamente ao tipo do parâmetro do método estático. Como o método é estático, ele pode ser chamado diretamente pela classe (`Calcular.reajuste(...)`). O retorno `double` é compatível com a variável `c`.

Fonte: FCC PGE-AM 2022 Técnico em Gestão Procuratorial - Especialidade Engenharia de Software (Caderno Tipo 001). Reproduzida para fins de estudo.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho