|
Register Now!
|
|
Register now for vtap for the fastest and easiest way to watch web video on your mobile device!
|
|
Multiple inheritance refers to a feature of some object-oriented programming languages in which a class can inherit behaviors and features from more than one superclass. This contrasts with single inheritance, where a class may inherit from only one superclass.
Languages that mostly support multiple inheritance are: Eiffel, C++, Python, Perl, and CLOS (LISP).
Multiple inheritance allows a class to take on functionality from multiple other classes, such as allowing a class named StudentMusician to inherit from a class named Person , a class named Musician , and a class named Worker . This can be abbreviated StudentMusician : Person, Musician, Worker .
Ambiguities arise in multiple inheritance, as in the example above, if for instance the class Musician inherited from Person and Worker and the class Worker inherited from Person. There would then be the following rules:
StudentMusician: Person, Musician, Worker Musician : Person, Worker Worker: Person
If a compiler is looking at the class StudentMusician it needs to know whether it should join identical features together, or whether they should be separate features. For instance, it would make sense to join the "Age" features of Person together for StudentMusician. A person's age doesn't change if you consider them a Person, a Worker, or a Musician. It would, however, make sense to separate the feature "Name" in Person and Musician if they use a different stage name than their given name. The options of joining and separating are both valid in their own context and only the programmer knows which option is correct for the class they are designing.
Languages have different ways of dealing with these problems of repeated inheritance.
Java, Nemerle, C#, PHP, and Objective-C do not allow multiple inheritance; this results in no ambiguity. However, Java, Nemerle, C# , PHP version 5 and Objective-C allow classes to inherit from multiple interfaces, recreating some of the problems, for example the problem mentioned above.

