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?
- A0
- B2
- C10
- D12 (alternativa correta)
- E110
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+ynão é 0, pois após ocatch(Exception e),x=y=1ec=5, e depoism2(5)soma 5 a cada um, resultando emx=6ey=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
xfosse considerado, masx+yé 12, não 10. - (D) Correta: O gabarito oficial é 12. A exceção lançada é
Ex01, que não é capturada pelocatch(Ex02)(poisEx01não é subclasse deEx02), então cai nocatch(Exception e), que definex=y=1ec=5. Depois,m2(5)é chamado. Comom2éprivateemA, a versão deAé executada (a deBnão sobrescreve), somando 5 a cada:x=6,y=6, total 12. - (E) Incorreta: O valor 110 seria se
m2deBfosse chamado (multiplicando por 5), mas comom2éprivate, a versão deAé 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.