Previous | Table of Contents | Next |
Value types may also be abstract. They are called abstract because an abstract value type may not be instantiated. Only concrete
types derived from them may be actually instantiated and implemented. Their implementation, of course, is still local. However,
because no state information may be specified (only local operations are allowed), abstract value types are not subject to
the single inheritance restrictions placed upon concrete value types. Essentially they are a bundle of operation signatures
with a purely local implementation. This distinction is made clear in the language mappings for abstract values.
Note that a concrete value type with an empty state is not an abstract value type. They are considered to be stateful, may
be instantiated, marshaled and passed as actual parameters. Consider them to be a degenerate case of stateful values.