Flip the Dependency

In the Dependency Inversion Principle, what does 'inversion' refer to?

A

Inverting the class hierarchy so leaf classes become base classes

B

Inverting the call stack so lower-level modules call into higher-level modules

C

Inverting the direction of source code dependencies so that high-level modules define interfaces that low-level modules implement

D

Inverting control flow by using callbacks instead of direct function calls