Ao executar o código abaixo, verão que a saída dele é:
A 44 4 44 A 44 44 44
O meu questionamento é sobre o por quê do primeiro 4 na segunda linha.
O atributo h da classe Baap não é estático, logo no meu entendimento, o "h" a ser referenciado deveria ser do objeto A (44).
class Baap{
public int h=4;
public int getH(){
System.out.println("Baap "+h);
return h;
}
}
public class A extends Baap {
public int h=44;
public int getH(){
System.out.println("A "+h);
return h;
}
public static void main(String[] args) throws Exception {
Baap b = new A();
System.out.println(b.h+" "+b.getH());
A bb = (A)b;
System.out.println(bb.h+" "+bb.getH());
}
}