¿Por qué la salida es diferente en los dos casos?

¿Por qué la salida es diferente en el caso a continuación, incluso cuando la variable ha sido anulada?

public class A {
    int a = 500;

    void get() {
        System.out.println("a is " + this.a);
    }
}

public class B extends A {
    int a = 144;
}

public class mainmethod {
    public static void main(String args[]) {
        B ob = new B();
        System.out.println("a is " + ob.a);
        ob.get();
    }
}

Respuestas a la pregunta(0)

Su respuesta a la pregunta