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.
Multiple inheritance is not supported because it complicates the compiler - There may be name collisions of variables and methods of superclasses. Suppose a class C extends Class A and B which has methods show(). - C++ uses explicit referencing of super class methods and attributes but it complicates the complier.
Java does not have multiple inheritance because it has interfaces. These are two different solutions to the same problem. Java chose interfaces over MI because they are cleaner and more elegant (and used by other Smalltalk-derived OO languages such as Objective-C). This does not mean, however, that they are perfect. You could debate the merits of each back and forth and nobody comes away from the argument feeling happy. That said, I have yet to come across a situation in my coding where I have actually needed multiple inheritance. And, if I did, I could construct a class that actually uses multiple inheritance. It just takes using interfaces and judicious uses of inner classes. Not that I recommend doing this (and I have not tired this out in practice...), but it is possible. And, as a note, C# has solved the name-collision problem. This is something that I would like to see included in Java as well.
Piscis Babelis est parvus, flavus, et hiridicus, et est probabiliter insolitissima raritas in toto mundo.