Look at the following C++ code
class Base1 {
public:
Base1();
virtual ~Base1();
virtual void speakClearly();
virtual Base1 *clone()
At runtime when you get:
Base2 b2;
Base1* b1_ptr = (Base1*)&b2;
b1_ptr->mumble(); // will call Base2::mumble(), this is the reason.
Then the Base2::mumble() needs to be invoked! Take care that mumble() is the ONLY virtual method that was overriden in hierarchy. (Even, You may think that clone() is overriden too but that returns different type among classes then it is another signature).