File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Java in General and the fly likes Multiple Inheritance in Java 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 » Java in General
Bookmark "Multiple Inheritance in Java" Watch "Multiple Inheritance in Java" New topic

Multiple Inheritance in Java

Ramya Krishnaswamy

Joined: Mar 18, 2006
Posts: 1
I have a doubt. Why is Multiple inheritance been removed from Java [for any specific reasons]? And how would an Interface replace multiple inheritance.

With kind Regards<br />Ramya
Ernest Friedman-Hill
author and iconoclast

Joined: Jul 08, 2003
Posts: 24199


Welcome to JavaRanch!

Multiple inheritance has not been "removed" from Java; Java has never had multiple inheritance. It was never added in the first place. Why was it not included? Because in C++, in particular, it causes so many headaches. Java is designed to be a simple language to use and understand, and multiple inheritance as implemented in a strongly-typed language generally is not.

A Java class can have many different runtime types by implementing many different interfaces. This is one half of the "multiple inheritance equation" --- the one that's important from a design perspective. If you don't understand why this is more important than the other half -- the "inheriting actual code" part -- then you will learn with some experience.

But in any case, a Java class can inherit many types by implementing interfaces. To reuse code from multiple classes, though, you have to use delegation -- i.e., keep a member of another class, and forward method calls to it, rather than trying to extend it.

[Jess in Action][AskingGoodQuestions]
vignesh hariharan
Ranch Hand

Joined: Jun 23, 2005
Posts: 77
let me give u an example to illustrate..

suppose u have 3 classes.. two super classes classA and classB..
and both has a method which r named as show().. let both the classes have same method name but different defnition..

if suppose u extend both to ur classC which is ur subclass.. then if u create a an object of ur classC obj=new classC(); and say; which method will be called?? will it call from classA or classB?? assuming that u r not overriding that show() in ur will throw an error.. but java allows u to create same method names in two or more different there lies the difficulty or the bug which is there in c++.. so if u implement as an interface u r supposed to override.. it becomes mandatory.. then u will obviously call the subclass version.

thus multiple inheritance is not introduced in java.. and this is one of the plus point of java as well..
[ March 20, 2006: Message edited by: vignesh hariharan ]

Roy Simon
Ranch Hand

Joined: Aug 26, 2005
Posts: 62

Multiple inheritance when used tends to complicate ur code a lot and also the fact that all graphs (obtained by multiple inhertance) can be represented by trees (simple or hierarchical inheritance or multilevel inheritance) by implementing a proper design. hence first of all multiple inheritance is not required as a matter of speaking and if u really need it that badly its not totally removed from java. by using interfaces u can get runtime inheritance but the difference being that u dont have a super implementation of the interface methods

I agree. Here's the link:
subject: Multiple Inheritance in Java
It's not a secret anymore!