[quote=Rodrigo Sasaki]Não. Mas você poderia ter descoberto isso rapidamente testando
Você só importa as classes do pacote que definiu no import, não classes em pacotes “filhos”[/quote]
Obrigado…
Eu “sabia” disso…é que vi uma questão de concurso público fazendo isso e ele levava em consideração que importava. Como as outras alternativas também estavam sem erros, eu desconfiei.
Questões de concursos colocam em prova a segurança no que sabemos.
Teve uma questão que vou até compartilhar…não é usual esse tipo de coisa, por isso dúvidas aparecem.
[code]public abstract class ClasseA {
private int x = 1;
int y = 2;
public ClasseA(int p) {
x = p;
}
public int mt_a(int a, int b) {
try {
if (a % 2 == 1)
throw new ExcecaoAB();
return a + b;
} catch (ExcecaoAB e) {
return a * x + b * y;
} catch (Exception e) {
return a * x - b * y;
}
}
}
[/code]
public class ClasseB extends ClasseA {
int x = 2;
int y = 4;
public ClasseB() {
super(0);
}
public int mt_a(int a, int b) {
try {
if (b % 2 == 1)
throw new ExcecaoA();
return a - b;
}
catch (ExcecaoAB e) {
return 4 * y;
}
catch (Exception e) {
return 5 * x;
}
finally {
x++;
y++;
}
}
}
public class ExcecaoA extends Exception {
}
[code]
public class ExcecaoAB extends ExcecaoA{
}[/code]
public class Q65 {
public static void main(String[] args) {
ClasseA c = new ClasseB();
System.out.println(c.mt_a(2, 3));
}
}
Normalmente, nós liberamos recursos em blocos finally. O que a banca fez nesse programa foi incrementar uma variável depois de um return, dentro de um bloco finally. Gerou dúvida em mim. Tive que depurar para ver o que fazia, pois finally sempre executa, não importa o que ocorra. Mas o bloco catch mandava retornar o controle para o chamador antes de finally executar.