1
resposta

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

Não entendi o porque imprimi 2. O método x da classe pai,chama o método y da classe filho?

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

Oi Fernando, como o método y foi sobreescrito, em tempo de execução, é ele que vai ser invocado. Lembra que o método x foi herdado pela classe C.