Abstract Software Type Structure

Jump to: navigation, search

An Abstract Software Type Structure is a software type structure that ...



  • (Wikipedia, 2014) ⇒ http://en.wikipedia.org/wiki/class_(computer_programming)#Abstract_and_concrete Retrieved:2014-8-9.
    • In a language that supports inheritance, an abstract class, or abstract base class (ABC), is a class that cannot be instantiated because it is either labeled as abstract or it simply specifies abstract methods (or virtual methods). An abstract class may provide implementations of some methods, and may also specify virtual methods via signatures that are to be implemented by direct or indirect descendants of the abstract class. Before a class derived from an abstract class can be instantiated, all abstract methods of its parent classes must be implemented by some class in the derivation chain.[1]

      Most object-oriented programming languages allow the programmer to specify which classes are considered abstract and will not allow these to be instantiated. For example, in Java and PHP, the keyword abstract is used. In C++, an abstract class is a class having at least one abstract method given by the appropriate syntax in that language (a pure virtual function in C++ parlance).[1] A class consisting of only virtual methods is called a Pure Abstract Base Class (or Pure ABC) in C++ and is also known as an interface by users of the language.[2] Other languages, notably Java and C#, support a variant of abstract classes called an interface via a keyword in the language. In these languages, multiple inheritance is not allowed, but a class can implement multiple interfaces. Such a class can only contain abstract publicly accessible methods. [3]

      A concrete class is a class that can be instantiated, as opposed to abstract classes, which cannot.

  1. 1.0 1.1 Cite error: Invalid <ref> tag; no text was provided for refs named cpppoly
  2. Cite error: Invalid <ref> tag; no text was provided for refs named cppinterface
  3. Cite error: Invalid <ref> tag; no text was provided for refs named javainterface

  • (Wikipedia, 2014) ⇒ http://en.wikipedia.org/wiki/abstract_type Retrieved:2014-8-9.
    • In programming languages, an 'abstract type is a type in a nominative type system which cannot be instantiated directly. Abstract types are also known as existential types. [1] 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 which can be instantiated. It may include abstract methods or abstract properties [2] that are shared by its subtypes.

      The object oriented form of abstract types are known as abstract base classes or simply abstract classes. In some languages, abstract types with no implementation are known as protocols, interfaces, signatures, class types. Other names for language features that are (or may be) used to implement abstract types include traits, mixins, flavors, roles, or type classes.

      A type that is not abstract is called a concrete type (or concrete class).

  1. Mitchell, John C.; Plotkin, Gordon D.; Abstract Types Have Existential Type, ACM Transactions on Programming Languages and Systems, Vol. 10, No. 3, July 1988, pp. 470–502
  2. http://download.oracle.com/javase/tutorial/java/IandI/abstract.html