Questão nº 50
Questão de Tecnologia da Informação · CEBRASPE TCE MS 2025 SERVIDOR (nº 50)
```java
interface Pagavel {
double calcularPagamento();
}
class Freelancer implements Pagavel {
double horasTrabalhadas;
double valorHora;
Freelancer(double horas, double valor) {
this.horasTrabalhadas = horas;
this.valorHora = valor;
}
public double calcularPagamento() {
return horasTrabalhadas * valorHora;
}
}
class Consultor extends Freelancer {
double bonus;
Consultor(double horas, double valor, double bonus) {
super(horas, valor);
this.bonus = bonus;
}
@Override
public double calcularPagamento() {
return super.calcularPagamento() + bonus;
}
}
public class TestePagamento {
public static void main(String[] args) {
Pagavel f = new Freelancer(40, 50);
Pagavel c = new Consultor(30, 80, 500);
System.out.println(f.calcularPagamento());
System.out.println(c.calcularPagamento());
System.out.println(f instanceof Consultor);
}
}
```
Considere o código Java 17 acima. Assinale a opção que corresponde ao resultado da execução do código em apreço no console.
- A2900.0
2000.0
false - B2000.0
2900.0
false (alternativa correta) - C50
80
false - D2000.0
2900.0
true - E50
80
true
Resposta comentada
Gabarito Alternativa B
Conceito-chave: Uma variável do tipo Pagavel só "enxerga" os métodos da interface, mas o método chamado é o da classe real do objeto (polimorfismo). O operador instanceof verifica se o objeto é daquela classe ou de uma subclasse dela.
- (A) Incorreta: A ordem está invertida: o
Freelancer(40 × 50 = 2000.0) é impresso antes doConsultor(30 × 80 + 500 = 2900.0), eféFreelancer, nãoConsultor, entãofalse. - (B) Correta:
f.calcularPagamento()executa o método deFreelancer→ 40 × 50 = 2000.0.c.calcularPagamento()executa o método sobrescrito deConsultor→ 30 × 80 + 500 = 2900.0.f instanceof Consultoréfalse, poisfaponta para um objetoFreelancer, que não é subclasse deConsultor(a herança é o contrário:ConsultorestendeFreelancer). - (C) Incorreta: Os valores impressos são os pagamentos (produtos e soma), não os atributos isolados
valorHora(50 e 80). A saída correta é numérica com ponto decimal (2000.0 e 2900.0). - (D) Incorreta: O resultado dos pagamentos está certo, mas
f instanceof Consultoréfalse— a pegadinha aqui é pensar quefpoderia serConsultor, mas o objeto criado foinew Freelancer(...), einstanceofverifica o objeto real, não o tipo da variável. - (E) Incorreta: Repete o erro da (C) e da (D): imprime valores errados (50 e 80) e ainda afirma
truepara uminstanceofque é falso.
Fonte: CEBRASPE TCE MS 2025 SERVIDOR Auditor de Controle Externo - Área: Tecnologia da Informação. Reproduzida para fins de estudo.