Multiple Inheritance With Diamond Problem In Java
Multiple Inheritance in Java
Multiple Inheritance not supported in java but Multiple Inheritance is a feature of object oriented concept. A class can inherit properties of more than one parent class. The problem occurs when there exist methods with same signature in both the super classes and subclass. When child class calling the method, the compiler cannot determine which class method to be called and even on calling which class method gets the priority.
Let's take an example, suppose we have two parent class A and B. Both have a test method. Now we created a child Class C. Which is extends the both parents classes. When child class calling the method, the compiler cannot determine which class method to be called and even on calling which class method gets the priority.
Why Java doesn’t support Multiple Inheritance?
Consider the below Java code. It shows error.
|
The Diamond Problem:
GrandParent / \ / \ Parent1 Parent2 \ / \ / Test
// A Grand parent class in diamond
class
GrandParent{
void
fun()
{
System.out.println(
"Grandparent"
);
}
}
// First Parent class
class
Parent1
extends
GrandParent{
void
fun()
{
System.out.println(
"Parent1"
);
}
}
// Second Parent Class
class
Parent2
extends
GrandParent{
void
fun()
{
System.out.println(
"Parent2"
);
}
}
// Error : Test is inheriting from multiple
// classes
class
Test
extends
Parent1, Parent2{
public
static
void
main(String args[])
{
Test t =
new
Test();
t.fun();
}
}
On calling the method fun() using Test object will cause complications such as whether to call Parent1’s fun() or Beta’s fun() method.
post a comment