Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Dúvida] Exercício 10 - Certificação Java SE 7 Programmer I: Relações entre classes

Por que o método x() da classe B -pai, retorna o valor do método y() da classe C -filha?


class B {
    int x() { return y();}
    int y() { return 3; }
}
class C extends B {
    C() {
        super();
        z(x());
    }
    void z(int i) {
        System.out.println(i);
    }
    int y() { return 2; }
}
class A {
    public static void main(String[] args) {
        new C();
    }
}
1 resposta
solução!

Oi, Luiz! Tudo bem?

A classe C é uma subclasse da classe B, ou seja, ela herda todos os métodos e atributos da classe B. Dessa forma, na classe B o método x() retorna o valor do método y() da classe C.

Somado a isso, quando o construtor da classe C é chamado, ele primeiro chama o construtor da classe B usando a palavra-chave "super()". Em seguida, chama o método z() passando o valor retornado pelo método x() como argumento.

Entretanto, como a classe C sobrescreve o método y() e retorna o valor 2, quando o método x() é chamado na classe B, ele retorna o valor 2, que é então passado para o método z() e impresso.

Por isso a resposta correta para o exercício é a opção C: Compila e imprime 2.

Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!

Um forte abraço e bons estudos!

Caso este post tenha te ajudado, por favor, marcar como solucionado ✓