Abstract class

A class that is not designed to be instantiated, but serves as a base class for the definition of subclasses. Regardless of whether an abstract class inherits instance data and methods from parent classes, it will always introduce methods that must be overridden in a subclass, in order to produce a class whose objects are semantically valid.