The purpose of an abstract class is to define a common protocol for a set of concrete subclasses . This is useful when defining objects that share code, abstract ideas, etc. Attempts to instantiate an abstract class will always result in a compiler error.