An abstract class is a superclass of which one is not expected to create instances. Instead, it's just a placeholder for common functionality to be inherited by subclasses. Typically, subclasses of an abstract class are still associated by gen-spec