General concepts you've got to understand so everything could possibly make sense to you.
In java we have 2 concept of calling methods[1]:
-
Static dispatching - The Java compiler knows in compile time which function code block to call
-
Dynamic dispatching - The Java compilers inserts a code, that on runtime decides which function code block to call