Questão nº 58

Questão de Tecnologia da Informação · CESGRANRIO BASA 01/2021 (nº 58)

CESGRANRIO2021Técnico Científico - Área de Formação: Tecnologia da InformaçãoTecnologia da Informação
Gabarito: Dver comentário ↓

Considere as seguintes classes e interfaces Java, que ocupam arquivos separados do pacote default:

public class Ex01 extends Exception {
    public Ex01() {
    }
    public Ex01(String m) {
        super(m);
    }
}
public class Ex02 extends Ex01 {
    public Ex02() {
    }
    public Ex02(String m) {
        super(m);
    }
}
public class A {
    int x,y;
    public A(int a, int b) {
        x=a;
        y=b;
    }
    public void m1(int c) {
        try {
            if(c == 0)
                throw new Ex01();
            x%=c;
            y%=c;
        }
        catch(Ex02 e) {
            x=10;
            y=100;
        }
        catch(Exception e) {
            x=y=1;
            c=5;
        }
        m2(c);
    }
    private void m2(int c) {
        x+=c;
        y+=c;
    }
}
public class B extends A {
    public B(int a, int b) {
        super(a,b);
    }
    public void m2(int c) {
        x*=c;
        y*=c;
    }
    public void m3() {
        System.out.printf("%d",x+y);
    }
}
public class Main {

    public static void main(String[] args) {
        B b=new B(10,20);
        b.m1(0);
        b.m3();
    }
}

O que será exibido no console quando o método main() for executado?

Resposta comentada

Gabarito Alternativa D

Conceito-chave: Herança e sobrescrita de métodos: um método private da superclasse não é sobrescrito pela subclasse, pois ele não é visível para a subclasse. Além disso, o catch de Ex01 captura a exceção lançada, pois Ex02 é subclasse de Ex01, mas o catch de Ex02 vem antes e não é executado.

  • (A) Incorreta: O valor final de x+y não é 0, pois após o catch(Exception e), x=y=1 e c=5, e depois m2(5) soma 5 a cada um, resultando em x=6 e y=6, total 12.
  • (B) Incorreta: O valor 2 não aparece em nenhum cálculo; o resultado é 12, não 2.
  • (C) Incorreta: O valor 10 seria se apenas x fosse considerado, mas x+y é 12, não 10.
  • (D) Correta: O gabarito oficial é 12. A exceção lançada é Ex01, que não é capturada pelo catch(Ex02) (pois Ex01 não é subclasse de Ex02), então cai no catch(Exception e), que define x=y=1 e c=5. Depois, m2(5) é chamado. Como m2 é private em A, a versão de A é executada (a de B não sobrescreve), somando 5 a cada: x=6, y=6, total 12.
  • (E) Incorreta: O valor 110 seria se m2 de B fosse chamado (multiplicando por 5), mas como m2 é private, a versão de A é usada, resultando em 12.

Fonte: CESGRANRIO BASA 01/2021 Técnico Científico - Área de Formação: 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