Abstract classes

These are essentially interfaces in which other classes may use their
methods and override them to meet specific needs.