1
resposta

Exercícios 3

Pessoal, o que será mostrado nesse código é 1. Mas qual o motivo?

class D extends C {
    void x() { System.out.println(1); }
    void y(C b) {
        x();
    }
}
class C extends B {
    void x() { System.out.println(2); }
}
class B {
    void x() { System.out.println(3); }
    void y(B b) {
        b.x();
    }
}
class A {
    public static void main(String[] args) {
        new D().y(new C());
    }
## }
1 resposta

Olá Gabriel!

No código apresentado, será mostrado o número 1. Isso acontece porque a classe D herda da classe C, que por sua vez herda da classe B. A classe B possui um método x() que imprime o número 3, mas esse método não é utilizado em nenhum momento. Já a classe C possui um método x() que imprime o número 2, e a classe D possui um método x() que imprime o número 1. Ao chamar o método y() da classe D passando uma instância de C como parâmetro, o método x() da classe D é chamado, imprimindo o número 1.

Espero ter ajudado e bons estudos!