Actually the right object is being called. Its a
principal of polymorphism thru overriding. See even
though the refrence variable is of type Base the
object is that of the derived class. Accoriding to
polymorphism thru overriding. If the method from the
parent class is not over ridden in the child class
than the method from the parent class will be called
or else vice versa.
Check out the book by Bruce Eekel "Thinking in Java"