Здравствуйте, кто не занят объясните горепрогеру)) Определяем суперкласс - Example у которого есть два поля i,X=5, а также метод printOut. И есть подкласс clExample2 с изменённым значением X и переопределённый метод printOut, который сообщает нам значение Х=6и то что мы вызвали метод подкласса. Почему при передаче ссылки на подкласс в переменную суперкласса методы вызываются из подкласса, а значение полей равны как в суперклассе?
package study;
class Example {
    private int i;
    int X=5;
    public void printOut(){
        System.out.println(i);
    }
}
class clExample2 extends Example{
    int X=6;
    public void printOut(){
        System.out.println("Функционал подкласса "+X);
    }
}

public class Main {

    public static void main(String[] args) {

        clExample2 example2object=new clExample2();

        Example exampleObject=example2object;//В суперкласс кладём ссылку на подкласс

        exampleObject.printOut();   //метод вызывается как и положенно из подкласса со значением Х=6

        System.out.println(exampleObject.X);    //но значение поля Х здесь = 5 как в суперклассе
        // ожидалось что значение X будет = 6 как у подкласса
}
p.s. Спасибо за помощь.