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

Я изучаю переопределение функций-членов в 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?

60
задан sapy 4 April 2019 в 10:42
поделиться