Abstract classes are classes that contain one or more abstract methods where an abstract method is a method that is declared but contains no implementation.
Abstract classes may not be instantiated, and require subclasses to provide implementations for the abstract methods.