Questão nº 34

Questão de Tecnologia da Informação · CESGRANRIO CAIXA 1/2021/NM (nº 34)

CESGRANRIO2021Técnico Bancário Novo - Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Dver comentário ↓

As classes Java a seguir pertencem ao pacote default.

```java
class A1 {
protected int va1=1,va2=2;
public A1(int x) {
va1+=x;
va2=x;
}
}

class A2 extends A1 {
protected int vb1=10;
}

class A3 extends A2 {
protected int vc1=0;
public A3(int y) {
vc1=(va1+va2)
y;
}
}

public class Main {

public static void main(String[] args) {
A3 o=new A3(2);
System.out.println(o.vc1);
}
}
```

Qual construtor poderá ser inserido na classe A2, sem que um erro de compilação seja gerado?

Resposta comentada

Gabarito Alternativa D

Conceito-chave: Em Java, todo construtor de uma subclasse deve chamar, direta ou indiretamente, um construtor da superclasse. Se você não escrever essa chamada, o compilador insere automaticamente super() (sem argumentos). Como A1 só tem um construtor que exige um int, a classe A2 precisa chamar super(int) explicitamente — e essa chamada deve ser a primeira instrução do construtor.

  • (A) Incorreta: Não chama super(int); o compilador tentaria inserir super() que não existe em A1, gerando erro.
  • (B) Incorreta: A chamada super(z) está correta, mas o construtor public A2(int z) não é usado por A3 (que chama super() implicitamente), e A3 não tem como chamar esse construtor com int — logo, A3 falha ao compilar.
  • (C) Incorreta: A chamada super(vb1) está depois de vb1=..., violando a regra de que super() deve ser a primeira instrução; além disso, vb1 ainda não foi inicializado.
  • (D) Correta: super(0) é a primeira instrução e chama o construtor de A1 com argumento int; depois, vb1 é atribuído normalmente. Isso permite que A3 compile, pois A2 agora tem um construtor sem parâmetros.
  • (E) Incorreta: super(vb1) usa vb1 antes de ser inicializado (valor padrão 0), mas o erro fatal é que super() deve ser a primeira instrução — aqui está, mas o argumento vb1 não é válido porque o campo ainda não foi definido no contexto da superclasse; além disso, A2 não teria construtor sem parâmetros, quebrando A3.

Fonte: CESGRANRIO CAIXA 1/2021/NM Técnico Bancário Novo - Tecnologia da Informação. 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