A class that defines a shared interface and can recognize concrete or virtual subclasses.
Also known as ABC