Answer:
The Dependency Inversion principle is a basic principle of Object Oriented Programming and Part of SOLID principles. It states that: Entities must depend on abstractions, not on concretions. It states that the high-level module must not depend on the low-level module, but they should depend on abstractions
Step-by-step explanation:
High-level modules, which provide complex logic, should be easily reusable and unaffected by changes in low-level modules, which provide utility features. To achieve that, you need to introduce an abstraction that decouples the high-level and low-level modules from each other.
Basically Dependency introduced interface abstraction between high level and low level modules which terminates their dependency on each other instead now they depend both on abstraction. This principle enables you to change higher-level and lower-level components without affecting any other classes, as long as you don’t change any interface abstractions.