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.