Towards Principles of Inheritance and Subtyping in Programming Languages
01 January 1988
The concepts of inheritance and subtyping are adding new dimensions to programming language design and use, but they are not as well understood as longer established ideas such as data abstraction and modularity. Confusion about these concepts leads to language-design problems, such as designs that are deficient with respect to either or both concepts, that result in overlap or interference between the implementations of the two concepts, or that are poorly understood or described. Language-design problems in turn lead to language-usage problems, such as uncertainty about how to use inheritance and subtyping, uncertainty about which mechanism to use, and conflicting styles of use within a software system.