Abstract classes are Classes that don’t have any Objects, but instead have many subclasses via Inheritance, which have overriding methods to implement functionality.

If a class is defined to be abstract, then:

  • It may or may not have abstract methods. An abstract method does not have any functionality, but does have a method signature.
  • It cannot be instantiated, i.e. an object cannot be created from it
  • It can have a constructor, but the only way to call it is via the super keyword from a subclass.