This week's book giveaway is in the OCAJP 8 forum. We're giving away four copies of OCA Java SE 8 Programmer I Study Guide and have Edward Finegan & Robert Liguori on-line! See this thread for details.
The designers of the language decided (correctly IMO) that multiple inheritance is more trouble than it's worth. Most uses of it in C++ are due to poor design choices or the lack of interfaces, so having interfaces instead of multiple inheritance makes for better code.
C++ supports multiple inheritance, in sense, A class canbe derived from more than one base class. The problem that the c++ programmers face with multiple inheritance is ambiguity in inherited members, you can understand that if you consider the famous rhombus problem. ClassA //m1() (protected) | ------------- | | ClassB ClassC | | -------------- | ClassD //gets m1 from the path A,B and A,C Here, class A has a protected member m1, the classes B and C are derived from A and hence will inherit m1(), assume the method is not overridden in the child classes. Now, D is derived from both B and C, D will have two copies of m1 and hence arises ambiguity. C++ tries to solve this problem by using virtual inheritance, but again, this is not a 100% solution. Java does support multiple inheritance, but, not directly. In java, a class can implement, more than one interface. Assume two interface have identical method declarations, it is enough if we define the method only once in the implementing class. Here, there is no ambiguity problems, because the methods' functionality is not defined in the interfaces. Consider this code,
How will you give different implementations for different interfaces??? In sense, if the method display() is called from I1 reference it should print "From I1" and from I2 reference should print "From I2" Thanks, Uma...