When you need to share state or partial implementation.
Abstract classes are ideal when you have a common base of shared fields or methods that apply to multiple classes. For instance, a `User` abstract class can contain fields like `id` and `email`, along with a concrete method `sendNotification()`. This can't be done with interfaces, which cannot hold state.
Additional Notes
When is an abstract class more suitable than an interface?