- Defines a common interface for all classes that inherit from it
- Cannot be instantiated or sealed - can contain both abstract and concrete members
- Requires implementation by subclasses
- Can have state
- Pros
- establish common pattern + enforce
- avoid code redundancy by having common code in the base class
- represents general concepts (like animal or shape)