Questão nº 54
Questão de Desenvolvimento de Sistemas · FGV CGU 2021 - Tarde (nº 54)
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 é:
- AErro de compilação na linha 5
- BSegunda
- CSegunda! (alternativa correta)
- DSegunda!!
- ESegunda!!!
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.