Здравствуйте, кто не занят объясните горепрогеру))
Определяем суперкласс - 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. Спасибо за помощь.