Room: BBL room 471
Speaker: Xiaoyu Cui
Title: Multiple inheritance
Inheritance is a key issue in object-oriented programming since it
provides a way to refine common attributes out, enabling inheriting data or
operations defined in one or more classes. For those characteristics of
inheritance, module re-usage in software engineering can be processed
easily. Inheritance can be seen as a relationship between classes where one
class would share data or operations from one or more other classes.
“Without inheritance every class would be a free-standing unit, each
developed from the ground-up. Different classes would bear no relationship
with one another, since the developer of each provides methods in whatever
manner he/she chooses. Any consistency across classes is the result of
discipline on the part of the programmers ”. Inheritance makes it
possible to specialize new classes upon pre-defined classes via adding new
features, etc, rather than designing a class from scratch. With
inheritance, it provides a possibility for incremental class building.
Inheritance glues the concepts of classes together, so the changes on
super class will be propagated to all its subclasses.
Classes in inheritance is defined as: the class that inherits features from
others which is called subclass, and the inherited class which is called super-class.
Inheritance is classified into single or multiple inheritance. Single
inheritance restricts that a subclass only can inherit from one super-class, which
forms a tree hierarchy. On the other hand, multiple inheritance allows
that a subclass inherits from more than one super-class which results in an inheritance
graph. Comparing with single inheritance, multiple inheritance provides
better feature sharing which effectively improves modularity,
reusability, and incremental design, etc. As summarized in , four
important uses of multiple inheritance are known: Multiple independent
protocols, Mix and match, Sub-modularity and Separation of Interface and
Multiple inheritance brings a powerful and convenient way for software
development. However, it leads to some complexity and ambiguity, therefore the
programming language has to provide mechanisms to solve those problems,
such that conflicts can be resolved. As mentioned in , those problems could
be: Name Collision, Repeated Inheritance, Method combination, Difficult to
implement and misuse. This paper give an overview of strategies that
implement multiple inheritance, and compares differences among them.
 B. Cox, Object Oriented Programming, an Evolutionary Approach, 1986
 G.B.Singh, Single Versus Multiple Inheritance in Object Oriented