The notion of inheritance in object-oriented programming

Abstract
Recently, there has been a debate over what the notion of inheritance means [1, 9, 13, 15, 16]. For example, Winkler [16] points to the dichotomy between the concept-oriented view (COV) and the program-oriented view (POV) of classes and inheritance. Wegner [15] has referred to COV as \log-ical" and POV as \physical. " According to COV, squares form a subclass of rectangles. But this leads to some major problems in POV, where the set of operations applicable to a subclass is seen as a monotonic extension of its superclass. This is because applying operations such as \set-width" to a square object would allow one to change the width of a square independently of its length. To remedy this situation, Winkler proposes an object-oriented view (OOV) of inheritance that replaces the term \class," \subclass" and \superclass" with \object type," \extension type" and \base type," respec-tively. Winkler makes it seem to be a dichotomy of two difierent, overlapping but not identical, views of inheritance that can be resolved by renaming the concepts involved. But it turns out to be a more complex issue on deeper re°ection. To realize the full complexity underlying the notion of inheritance, we must take a closer look at what Winkler has casually dubbed COV. Is inher-itance from a conceptual point of view always (or often) unambiguous? Is a square always a rectangle? While one may be tempted to answer both these questions in the a±rmative at ˉrst, a further re°ection reveals that things are more subtle. For instance, if we were to just think of a class of all squares and a class of all rectangles, then obviously the former is a proper subclass of

This publication has 5 references indexed in Scilit: