A partly finished class
An abstract class sits between a normal class and an interface. It can hold fields and finished (concrete) methods like any class, but it can also declare abstract methods — a signature with no body, marked abstract, which every subclass must implement. Because it is unfinished, an abstract class cannot be instantiated: new Shape(...) is a compile error.