Não entendi o pq do resultado b, b, c. No exerc. anterior entra no loop infinito(pois não tem o this ). ´
1.
2.import java.io.*;
3.class B {
4. void x(int i) throws IOException {
5. if(i<0) return; // Entra no método x, (e daqui não entendi, pq ele volta a imprimir "b" e depois "c")
6. this.x(-1);
7. System.out.println("c");
8. }
9.}
10.abstract class C extends B {
11. void x(int i) throws IOException {
12. System.out.println("b"); // Entra no método x imprime "b", e chama o super da classe B
13. super.x(i);
14. }
15.}
16.abstract class D extends C {
17. void x(int i) throws IOException {
18. super.x(i); //entra no método x da classe D q é "mãe" de E, e chama o super da classe mãe C
19. }
20.}
21.class E extends D {
22.}
23.class A {
24. public static void main(String[] args) throws IOException {
25. new E().x(32); //cria objeto E, e chama método x
26. }
27.}
Desculpem minha bagunça, tentei explicar como fiz na pilha. Abçs