Problem Statement
Explain how interfaces provide abstraction in OOP and give an example.
Explanation
Interfaces provide abstraction by declaring methods without implementing them, allowing multiple classes to implement the same interface in their own way. This means you can write code that works with the interface type without knowing the concrete class implementation. For example, an interface `PaymentMethod` might define `processPayment(amount)`. Then classes `CreditCardPayment`, `PaypalPayment`, and `CryptoPayment` implement that interface. Your checkout module can depend on `PaymentMethod`, not concrete classes, enabling flexibility and easier substitution.