2
respostas

Dúvida no Exercício 8

A minha dúvida é na última parte quando ele retorna para a Classe B.

Consegui entender que ele imprime b e depois b mas não consegui entender o porque dele imprimir c também na resposta final.

Quando o método é chamado novamente o parâmetro passado não é -1... Ele não reveria retornar no if.... !?

 if(i<0) return;
        this.x(-1);
        System.out.println("c");
2 respostas

Opa Deyve, rola você colocar o link para a dúvida? Só para eu entender direitinho o seu problema :).

A questão é essa, exercício 8 da Aula 02:

Escolha a opção adequada ao tentar compilar e rodar o arquivo a seguir:

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);
    }
}

A resposta do gabarito é:

b, b, c

Só entendi até o segundo "b", não entendi porque ele imprimiu ainda o "c"