To provide a common base with shared behavior while leaving specific details to subclasses.
Abstract classes allow developers to define templates for other classes. They can include both implemented methods and methods that subclasses must implement. For example, an abstract class `Payment` might define a method `process()` and an abstract method `validate()`, requiring subclasses like `CreditCardPayment` and `PayPalPayment` to provide their own `validate()` logic.