In general, functions are called the way you would expect. However, some functions (such as
_physics_process are called by the engine using
call_multilevel, which means it will call each method of the class hierarchy.
I am not sure what was the intent behind this, it's as if engine writers wanted to "simplify" the work of the script writers when inheritance is used, but personally I find it confusing because it is basically an exceptional and uncontrolled behavior.