File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Beginning Java and the fly likes why java does not support Multiple Inheritance? Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Java Interview Guide this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Java » Beginning Java
Bookmark "why java does not support Multiple Inheritance?" Watch "why java does not support Multiple Inheritance?" New topic

why java does not support Multiple Inheritance?

Sreedhar mar
Ranch Hand

Joined: Sep 15, 2003
Posts: 34
What is Multiple Inheritance .why java does not support ?

Jeroen Wenting
Ranch Hand

Joined: Oct 12, 2000
Posts: 5093
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.

David O'Meara

Joined: Mar 06, 2001
Posts: 13459

This is not a Servlet question. I'll move it to the Java in General (beginner) forum for you.

Joined: Sep 15, 2003
Posts: 7

Multiple inheritance is a way to inherit some properties , methods from the different classes(many parent class ).

i think, Interface concept is lot easy to understand write and implement .It does the same as multiple inheritance , but in a better way.
Uma Balu
Ranch Hand

Joined: Aug 22, 2003
Posts: 61
Hi Sreedhar,

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"
I agree. Here's the link:
subject: why java does not support Multiple Inheritance?
jQuery in Action, 3rd edition