Skip to Main Content
One of the fundamental concepts of the object-oriented paradigm is inheritance. Unfortunately, though, there is not just one semantic definition of inheritance in the object-oriented world; instead, it is used in various languages to represent a number of different kinds of class relationships. This creates several difficulties. One is that language-independent references to inheritance, in specifications for example, are not well-defined. Another is that we cannot apply our understanding of inheritance from one language to another. In some languages, we cannot even apply the same understanding of inheritance from one class to another. This paper identifies three different ways in which inheritance is used, describes the conceptual distinctions among them, and identifies what information we can infer from each.