Переопределение переменных-членов в Java

Я изучаю переопределяющие функции-члены в JAVA и думал об экспериментах с переопределяющими переменными-членами.

Итак, я определил классы

public class A{
    public int intVal = 1;
    public void identifyClass()
    {
        System.out.println("I am class A");
    }
}

public class B extends A
{
    public int intVal = 2;
    public void identifyClass()
    {
        System.out.println("I am class B");
    }
}

public class mainClass
{
    public static void main(String [] args)
    {
        A a = new A();
        B b = new B();
        A aRef;
        aRef = a;
        System.out.println(aRef.intVal);
        aRef.identifyClass();
        aRef = b;
        System.out.println(aRef.intVal);
        aRef.identifyClass();
    }
}

Выход:

1
I am class A
1
I am class B

Я не могу понять, почему, когда aRef установлен в b, intVal все еще имеет класс A?

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

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