Abstract Classes documentation
Abstract classes are classes that cannot be instantiated (is not able use to create new instance of itself) but which can be subclassed, the subclasses have access to the fields and methods declared in the abstract class. This is useful to extend functionality across a set of sub-classes that share commonalities in their structure and function.