What is an abstract class?
An abstract class is the name for any class from which you can instantiate an object.
Abstract classes must inherit from concrete classes.
Abstract classes must be redefined any time an object is instantiated from them.
An abstract class exists only so that other "concrete" classes can inherit from the abstract class.