CESGRANRIO — Profissional Transpetro de Nível Superior - Junior: Ênfase: 4: Análise de Sistemas - Infraestrutura — Linguagens de programação — 2023

Enunciado

Sejam as seguintes classes Java, que ocupam arquivos separados: public class L1 { int a=1, b=1, c=1; public L1() { a *= 2; b *= 2; c *= 2; } public int opA(int x, int y) { return a + b + c - opA(x) + opA(y); } public int opA(int x) { return x + 5; } { a++; b--; } } public class L2 extends L1 { public L2() { c+=2; } public int opA(int x, double y) { return a + b + c + opA(x)+ opA((int)y); } public static void main(String[] args) { L2 o=new L2(); System.out.println(o.opA(2,3)); } } O que será exibido no console quando o método main for executado?

Alternativas

  1. A)

    6

  2. B)

    7

  3. C)

    9

  4. D)

    19

  5. E)

    21

Gabarito e comentário

Resposta correta: C

Primeiro são executadas as inicializações de L1 e o bloco de inicialização da instância; depois, o construtor de L1 multiplica os atributos por 2 e o construtor de L2 acrescenta 2 a c. Ao final da construção do objeto, a=4, b=0 e c=4. A chamada o.opA(2,3) escolhe o método herdado opA(int,int), que calcula 4+0+4-(2+5)+(3+5)=9. Portanto, o console exibirá 9. Alternativa C.

Questões relacionadas