JavaQuest
JavaQuest

Reputation: 713

Java allowing multiple inheritance

I am confused regarding a concept in multiple inheritance. I have three classes A, B and C.

Class A {
    // ...
}

Class B extends A {
    // ...
}

Class C extends B {
    // ...
}

I know this is a bad practice of multiple inheritance and I also read java allows multiple inheritance through interfaces. But I am not getting any error in the above code. Please can anyone explain me with a clear example without using interface. Thanks!!

Upvotes: 3

Views: 350

Answers (4)

Udbhav Kalra
Udbhav Kalra

Reputation: 97

The code you have written above is an example of Multilevel inheritance not Multiple Inheritance.

Multiple Inheritance is like :

class A extends B,C {

//this code is not valid in JAVA

}

And, if you want to use interfaces for implementing a structure like multiple inheritance, then you could use:

interface test_interface1{
/*all the methods declared here in this interface should be the part   
** of the class which is implementing this current interface 
*/
}

Similarly :

interface test_interface2{

}

So, create a class TestClass like :

class TestClass implements test_interface1,test_interface2 {

//now you have to use each and every method(s) declared in both the interfaces
// i.e. test_interface1 & test_interface2

}

You could also use a syntax like:

class TestClass extends AnyClass implements test_interface1,test_interface2 {
/* but do keep in mind - use extends keyword before implements
** and now you know you cannot use more than 1 class names with extends keyword
** in java.
*/

Upvotes: 2

sparc_spread
sparc_spread

Reputation: 10843

"Multiple inheritance" in Java basically means inheriting multiple interfaces, not inheriting multiple implementations.

Now, there is a new feature of Java 8 that allows you to do something like multiple inheritance of actual implementations, via interfaces and something called default methods. I would strongly encourage you to really master the basics of Java first before trying them. Once you are ready, here is a good tutorial on default methods.

Upvotes: 2

Mureinik
Mureinik

Reputation: 312344

Your code does not contain multiple inheritance, and is, indeed, legal Java syntax. Multiple inheritance refers to a case where a class directly extends two superclasses. For example:

public class MyClass extends MyFather, MyMother {
}

Note that this is, of course, illegal Java syntax.

Upvotes: 2

Eran
Eran

Reputation: 394156

This is not multi-inheritance. Each class has exactly one direct super class. If your example was considered multi-inheritance, you wouldn't be able to use the extends keyword at all, since each class already extends by default the Object class.

Multi-inheritence would be

class C extends A,B {}

And that's illegal in Java.

Upvotes: 2

Related Questions