Single versus multiple inheritance in object oriented programming

Inheritance is one of the key elements of Object oriented programming. Inheritance is characterized as single or multiple depending on the number of classes a class can inherit from. Single inheritance is simple but restrictive. Multiple inheritance on the other hand is complex but allows a more natural definition of relationships between classes. There has been a significant amount of discussion on the value of multiple inheritance over single inheritance considering the complexity multiple inheritance adds. This paper reviews the two types of inheritance and examines their benefits. The paper then examines the issues and objections that have been raised on the two inheritance mechanisms. Graph, Linear, and Tree oriented implementations of multiple inheritance are reviewed to see how multiple inheritance issues are handled by various object oriented languages.

[1]  Craig Schaffert,et al.  An introduction to Trellis/Owl , 1986, OOPLSA '86.

[2]  Alan Snyder,et al.  Inheritance and the Development of Encapsulated Software Systems , 1987, Research Directions in Object-Oriented Programming.

[3]  Nuno Guimarães Building Generic User Interface Tools: an Experience with Multiple Inheritance , 1991, OOPSLA.

[4]  Peter Wegner,et al.  Concepts and paradigms of object-oriented programming , 1990, OOPS.

[5]  David A. Moon,et al.  Object-oriented programming with flavors , 1986, OOPLSA '86.

[6]  Luca Cardelli,et al.  A Semantics of Multiple Inheritance , 1984, Inf. Comput..

[7]  A. Snyder CommonObjects: an overview , 1986, OOPWORK '86.

[8]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[9]  Brad J. Cox,et al.  Object-oriented programming ; an evolutionary approach , 1986 .

[10]  Jean-Marc Geib,et al.  The point of view notion for multiple inheritance , 1990, OOPSLA/ECOOP '90.

[11]  Randy Shepherd,et al.  Object-Oriented Programming , 1994, Lecture Notes in Computer Science.

[12]  Alan Borning,et al.  Multiple Inheritance in Smalltalk-BO , 1982, AAAI.

[13]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[14]  Grady Booch,et al.  Object-Oriented Design with Applications , 1990 .

[15]  簡聰富,et al.  物件導向軟體之架構(Object-Oriented Software Construction)探討 , 1989 .

[16]  Van Nguyen,et al.  A Model for Object-Based Inheritance , 1987, Research Directions in Object-Oriented Programming.