Granny's Programming Pearls
"inside of every large program is a small program struggling to get out"
JavaRanch.com/granny.jsp
The moose likes Beginning Java and the fly likes Why java do not have multiple inheritance? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Java 8 in Action this week in the Java 8 forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "Why java do not have multiple inheritance?" Watch "Why java do not have multiple inheritance?" New topic
Author

Why java do not have multiple inheritance?

Vivian Josh
Ranch Hand

Joined: Oct 31, 2006
Posts: 112
Hi Ranchers,

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?

Is there any other reason apart from this?

- Vivian
Jesper de Jong
Java Cowboy
Saloon Keeper

Joined: Aug 16, 2005
Posts: 13884
    
  10

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.


Java Beginners FAQ - JavaRanch SCJP FAQ - The Java Tutorial - Java SE 7 API documentation
Scala Notes - My blog about Scala
Ernest Friedman-Hill
author and iconoclast
Marshal

Joined: Jul 08, 2003
Posts: 24168
    
  30

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.


[Jess in Action][AskingGoodQuestions]
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Why java do not have multiple inheritance?
 
Similar Threads
Multiple inheritance is avoid
Why Java sacrifice multiple inheritance for efficient Garbage collection & dynamic object model?
why we use interface instead of abstract class
Multiple Inheritance in Java
MULTIPLE IMPLEMENTATION INHERITANCE