From the Java fact that all class in Java have a parent class as Object
. But the same Java says that it doesn\'t support multiple inheritance. But what this code me
Java does not support Multiple Inheritance by a developer. Behind the scenes, the compiler ensures everything extends Object.
Basically, the compiler will modify
public Class A extends Object, B to practically be Class A extends B and Class B extends Object.
Multiple inheritance means that one class extends two other classes. Multiple inheritance is allowed in e.g. C++. But this is not that same as:
class Object {
...
}
class B extends Object { //default, not need to be there
...
}
class A extends B {
...
}
From the Java fact that all class in Java have a parent class as Object
Actually no, that's not true. Object
is only the default parent class. If you explicitly specify a parent, as in your example (A extends B
), then the class you're defining no longer has Object
as an immediate parent.
However, the fact that Object
is the default means that it's impossible to create a class (except for Object
itself) without a superclass. Since every class must have a superclass, every class has to have Object
as an ancestor at some level.
No, this is single inheritance. A inherits from B, B inherits from Object.
Multiple inheritance would be A
extends from B
and C
, where B
and C
don't inherit from each other, which can cause the Diamond Problem:
If B
defines a method foo()
and C
also defines a method foo()
, and I do this:
new A().foo();
Which foo()
implementation will be used?
This is a huge problem in many languages, so the Java designers decided not to allow multiple inheritance.
Multiple inheritance is having more than 1 direct base class. The example you have given is single inheritance.
For example, if you have 3 classes A
, B
and C
...
public class A extends B
with
public class B extends C
is still just single inheritance.
Multiple inheritance would be
public class A extends B, C