1
resposta

[Dúvida] Exercicio 10 - Use super e this para acessar objetos e construtores

class B {
    int y() { return 3; }
    int x() { return y();}

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

Na chamada do metodo Z no construtor de C é chamado o metodo X da classe B. Nesse metodo X é chamado o Y que existe na classe B e na C. Não entendi porque ele chama o metodo que está na classe C ao inves do metodo da classe B pois a execução está no contexto de B.

1 resposta

Boa noite Rafael.

Quando uma classe extende outra classe, a classe herda os métodos da classe extendida. No entanto, quando você redeclara o método na classe filha, esse passa a ter prioridade na chamada e é executada primeiro.