Почему результат отличается в двух случаях?

Почему выходные данные отличаются в приведенном ниже случае, даже если переменная была переопределена?

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

Ответы на вопрос(3)

Ваш ответ на вопрос