Such values can be operated upon solely by means of the operators defined for the type in question. Some types are subtypes of other supertypes . All values are typed. Without inheritance, every value is of exactly one type. All variables are also typed.
Every variable is declared to be of exactly one type.
Without inheritance, all possible values of a given variable are of exactly one type, namely the applicable declared type. Single vs. multiple inheritance. Obviously, the former is a special case of the latter. From a tutorial point of view, however, it's convenient to deal with single inheritance first, leaving the complexities of multiple inheritance until later, and that's what I'll do in this series. Until further notice, therefore, I'll take the unqualified term inheritance to mean single inheritance specifically.