Why Have Abstract Classes?
Abstract classes cannot be instantiated, so they don’t directly correspond to things in the real world.
Abstract classes are used to abstract information that is common to their subclasses, such as relationships with objects in other classes, or definitions of data fields.
Relationships = aggregation, association