An abstract class is an incomplete C# implementation that provides a base for derived classes. It cannot be instantiated directly, and derived classes must implement members marked with the abstract keyword. section 2.8
Use abstract classes when a shared base implementation should require specialization:
- Derive classes from one abstract class and fill in its missing implementations. section 2.8
- Mark unimplemented methods or properties with abstract. section 2.8
- Choose interfaces when classes need multiple contracts, because a class can inherit from only one base class but implement multiple interfaces. section 2.8





