Types are the unit of encapsulation in the runtime. There are three basic kinds of Types. Classes are by far the most common kind of types used. Classes can be abstract (subclasses must provide and implementation) and sealed classes (no subclass are allowed). Value types describe values that are represented as sequences of bits stored on the stack. An interface type is a partial description of a value, potentially supported by many object types.