This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I know that Java implemented single inheritance to make the inheritance simple and robust. It can make use of interfaces to have multiple inheritance. But why it can not inherit more than two classes like C++ ? C++ has given solution for avoiding ambiguity of which method to call if the same method exist in both super classes, then why java don't use that?
Because multiple inheritance is complicated and not needed. One problem that multiple inheritance introduces into a language is the diamond problem. In C++ this was solved by giving you both options: the default is to have separate instances of the contained superclass, and with virtual inheritance you can have a shared instance of the contained superclass.
In practice, multiple inheritance is never really necessary - I haven't felt the need to use it in the 8 years that I'm developing software in Java.
So the Java language designers chose to not make Java unnecessarily complex and left it out.
It also bears pointing out that in the early 90's, when Java was being developed, C++ compilers that correctly dealt with MI in all cases were rare if not nonexistent. Visual C++ was horribly broken, g++ wasn't much better. It's really far more complex than it appears on the surface, and getting it right is hard.