Inheritance is not subtyping

Abstract
In typed object-oriented languages the subtype relation is typically based on the inheritance hierarchy. This ap- proach, however, leads either to insecure type-systems or to restrictions on inheritance that make it less flexible than untyped Smalltalk inheritance. We present a new typed model of inheritance that allows more of the flex- ibility of Smalltalk inheritance within a statically-typed system. Significant features of our analysis are the intro duction of polymorphism into the typing of inheritance and the uniform application of inheritance to objects, classes and types. The resulting notion of type inher- itance allows us to show that the type of an inherited object is an inherited type but not always a subtype.