What is the role of interfaces/abstractions in SOLID?

Answer

Interfaces and abstractions are the connective tissue that makes most SOLID principles work in practice. They appear in: OCP — you extend behavior by adding new implementations of an interface, not modifying existing classes; LSP — the interface defines the behavioral contract that all implementations must honor; ISP — well-designed interfaces are narrow and role-specific; DIP — both high-level and low-level modules depend on interfaces rather than each other. Without interfaces, OCP and DIP are nearly impossible to implement — you'd always be modifying concrete classes. Interfaces also enable polymorphism, allowing client code to work with any implementation that satisfies the contract.