Can a superclass variable access an overridden method of a subclass. For ex:
class A {
void callMe() {
System.out.println("Inside A");
}
}
class B extends A {
void callMe() {
System.out.println("Inside B");
}
}
class Dispatch {
public static void main(String args[]) {
A a = new A();
B b = new B(); // Object of type B
A r; // Obtain a reference of type A
r = a; // Refers to A object
r.callMe(); // Calls A's version of callMe()
r = b; // Refers to B object
r.callMe(); // calls B's version of callMe() and my question is on this
}
}
I learned earlier that a superclass variable that is referencing a subclass object can access only those parts of an object that are defined by the superclass. Then how can the second r.callMe()
call B
's version of callMe()
? It should only call A
's version of callMe()
again.