In
programming languages, an
abstract type is a type in a
nominative type system that cannot be
instantiated directly. Abstract types are also known as existential types. An abstract type may provide no implementation, or an incomplete implementation. Often, abstract types will have one or more implementations provided separately, for example, in the form of concrete subclasses that
can be instantiated. It may include
abstract methods or
abstract properties that are shared by its subtypes.