Dynamic Method Dispatch
1. Method overriding forms the basis for one of Java’s most powerful concepts: dynamic
method dispatch. Dynamic method dispatch is the mechanism by which a call to an
overridden method is resolved at run time, rather than compile time. Dynamic method
dispatch is important because this is how Java implements run-time polymorphism.
2. Let’s begin by restating an important principle: a super class reference variable can
refer to a subclass object. Java uses this fact to resolve calls to overridden methods at
run time.
3. When an overridden method is called through a super class reference, Java
determines which version of that method to execute based upon the type of the object
being referred to at the time the call occurs. Thus, this determination is made at run time.
4. When different types of objects are referred to, different versions of an overridden
method will be called. In other words, it is the type of the object being referred to (not the
type of the reference variable) that determines which version of an overridden method
will be executed.
5. Therefore, if a super class contains a method that is overridden by a subclass, then
when different types of objects are referred to through a super class reference variable,
different versions of the method are executed.