И в суперклассе A, и в подклассе B у меня есть переменная abc как 10 и 20 соответственно, и метод callme (), переопределенный в подклассе.
Если я делаю
A a = new B();
B b = B(new A());
тогда, если я напишу
a.callme() -> calls B's method
b.callme() -> calls A's method.
Это потому, что метод вызывается на основе фактического объекта.
Если я делаю
str = a.abc; // will print 10 , based upon ref var type A
str = b.abc; // will print 20 , based upon ref var type B
Почему это различие?Почему нет доступа к методам и переменным в зависимости от фактического объекта?
Спасибо