Boa tarde,
para o código abaixo descrito no exercício da certificação, não consegui entender o porque no momento da execução na classe B, a variável (i) quando volta com o valor negativo (-1) e faz um return voltando para execução na classe C, quando invoca novamente a classe B, pula a linha o if e pula a linha do this.x(-1) indo direto para o System.out.println("c");, dando o resultado de impressão de "b b c", alguém pode me explicar o que houve com o compilador no momento do return vazio???
import java.io.*;
class B {
void x(int i) throws IOException {
if(i<0) return;
this.x(-1);
System.out.println("c");
}
}
abstract class C extends B {
void x(int i) throws IOException {
System.out.println("b");
super.x(i);
}
}
abstract class D extends C {
void x(int i) throws IOException {
super.x(i);
}
}
class E extends D {
}
class A {
public static void main(String[] args) throws IOException {
new E().x(32);
}
}