Abstract type

abstract classabstractabstract classesabstract base classinterfacespure virtual class
In programming languages, an abstract type is a type in a nominative type system that cannot be instantiated directly; a type that is not abstract – which can be instantiated – is called a concrete type.wikipedia
62 Related Articles

Object-oriented programming

object-orientedobject orientedobject-oriented programming language
In class-based object-oriented programming, abstract types are implemented as abstract classes (also known as abstract base classes), and concrete types as concrete classes.
Abstract classes cannot be instantiated into objects; they exist only for the purpose of inheritance into other "concrete" classes which can be instantiated.

Concept (generic programming)

conceptconceptsgeneric concept
In generic programming, the analogous notion is a concept, which similarly specifies syntax and semantics, but does not require a subtype relationship: two unrelated types may satisfy the same concept.
In this way, concepts are related to abstract types but concepts do not require a subtype relationship.

Instance (computer science)

instanceinstancesinstantiated
In programming languages, an abstract type is a type in a nominative type system that cannot be instantiated directly; a type that is not abstract – which can be instantiated – is called a concrete type.
Not all classes can be instantiated – abstract classes cannot be instantiated, while classes that can be instantiated are called concrete classes.

Nominal type system

nominativenominalnominative type system
In programming languages, an abstract type is a type in a nominative type system that cannot be instantiated directly; a type that is not abstract – which can be instantiated – is called a concrete type.

Virtual function

virtualvirtual methodvirtual functions
A pure virtual function or pure virtual method is a virtual function that is required to be implemented by a derived class if the derived class is not abstract.

Mixin

mixinsinter-type declarationsmixed in
Other names for language features that are (or may be) used to implement abstract types include traits, mixins, flavors, roles, or type classes.

Programming language

programming languageslanguagedialect
In programming languages, an abstract type is a type in a nominative type system that cannot be instantiated directly; a type that is not abstract – which can be instantiated – is called a concrete type.

Subtyping

subtypesubtype polymorphismsupertype
Every instance of an abstract type is an instance of some concrete subtype.

Protocol (object-oriented programming)

interfaceinterfacesprotocols
In some languages, abstract types with no implementation (rather than an incomplete implementation) are known as protocols, interfaces, signatures, or class types.

Class-based programming

class-basedclass definedclass-based inheritance
In class-based object-oriented programming, abstract types are implemented as abstract classes (also known as abstract base classes), and concrete types as concrete classes.

Generic programming

genericgenericstemplates
In generic programming, the analogous notion is a concept, which similarly specifies syntax and semantics, but does not require a subtype relationship: two unrelated types may satisfy the same concept.

C++

C++ programming languageC++98C with Classes

Type system

dynamicstatictype checking
Abstract types are an important feature in statically typed OOP languages. Many dynamically typed languages have no equivalent feature (although the use of duck typing makes abstract types unnecessary); however traits are found in some modern dynamically-typed languages.

Duck typing

duckduck typedassuming that method exists
Many dynamically typed languages have no equivalent feature (although the use of duck typing makes abstract types unnecessary); however traits are found in some modern dynamically-typed languages.

Trait (computer programming)

traitsTraitTraits class
Other names for language features that are (or may be) used to implement abstract types include traits, mixins, flavors, roles, or type classes. Many dynamically typed languages have no equivalent feature (although the use of duck typing makes abstract types unnecessary); however traits are found in some modern dynamically-typed languages.

Leaf class (computer programming)

leaf classLeaf class (programming language)
Some authors argue that classes should be leaf classes (have no subtypes), or else be abstract.