Questão nº 54

Questão de Desenvolvimento de Sistemas · FGV CGU 2021 - Tarde (nº 54)

FGV2021Auditor Federal de Finanças e Controle - Área Tecnologia da InformaçãoDesenvolvimento de Sistemas
Gabarito: Cver comentário ↓

Observe o trecho de código a seguir.

```java
1 import java.io.*;
2
3 interface Segunda { public void segunda();}
4 interface Terca { public void terca();}
5 interface Quarta extends Segunda, Terca { public void quarta();}
6
7 class Quinta implements Segunda {
8 public void segunda(){System.out.println("Segunda");}
9 }
10
11 class Sexta extends Quinta implements Quarta {
12 public void segunda(){System.out.println("Segunda!");}
13 public void terca(){System.out.println("Segunda!!");}
14 public void quarta(){System.out.println("Segunda!!!");}
15 }
16
17 public class teste
18 {
19 public static void main( String[] args )
20 {
21 Quinta dia = (Quinta) new Sexta();
22 dia.segunda();
23 }
24 }
```

A saída produzida pela execução do código é:

Resposta comentada

Gabarito Alternativa C

Conceito-chave: Em Java, quando você chama um método, o que vale é o tipo real do objeto criado com `new`, não o tipo da variável que o guarda. Isso se chama polimorfismo dinâmico — o método executado é sempre o da classe mais específica na hierarquia.

(A) Incorreta: A linha 5 está correta; uma interface pode estender múltiplas interfaces com `extends`, separadas por vírgula, sem erro de compilação.

(B) Incorreta: "Segunda" seria impresso se o método chamado fosse o da classe `Quinta`, mas o objeto real é `Sexta`, que sobrescreve o método.

(C) Correta: O objeto é criado com `new Sexta()`, então o método `segunda()` executado é o da classe `Sexta` (linha 12), que imprime "Segunda!". O cast `(Quinta)` na linha 21 não muda o objeto real — apenas o tipo da referência.

(D) Incorreta: "Segunda!!" é o retorno do método `terca()`, que não é chamado no código.

(E) Incorreta: "Segunda!!!" é o retorno do método `quarta()`, que não é chamado no código.

Armadilha da banca: O distrator mais tentador é a letra B, pois muitos alunos olham apenas o tipo da variável `Quinta dia` e esquecem que o objeto real é `Sexta`. O cast não altera o objeto — ele só "disfarça" a referência, mas o método executado continua sendo o da classe real (`Sexta`).

Fonte: FGV CGU 2021 - Tarde Auditor Federal de Finanças e Controle - Área Tecnologia da Informação (Caderno Tipo 1). 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