In general, functions are called the way you would expect. However, some functions (such as _process
or _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.