Vikash Singh
@full_stack_geek
What is Diamond Problem in
Java ?
Vikash Singh
@full_stack_geek
Diamond Problem :- In Java, the diamond problem
is related to multiple inheritance. Sometimes it is
also known as the deadly diamond problem or
deadly diamond of death.
Talking about Multiple inheritance is when a child
class is inherits the properties from more than one
parents and the methods for the parents are same
(Method name and parameters are exactly the same)
then child gets confused about which method will
be called. This problem in Java is called the
Diamond problem.
Vikash Singh
@full_stack_geek
import [Link].*;
// Parent Class1
class Parent1 {
void funExample() { [Link]("Parent1"); }
}
// Parent Class2
class Parent2 {
void funExample() { [Link]("Parent2"); }
}
// Inherting the Properties from
// Both the classes
class test extends Parent1, Parent2 {
// main function
public static void main(String[] args)
{
test t = new test();
[Link]();
}
}
Vikash Singh
@full_stack_geek
Output
You will get error because Java does not support multiple
inheritance.
Explanation: In above example we have seen that “test”
class is extending two classes “Parent1 ” and “Parent2” and
its calling function “funExample()” which is defined in both
parent classes so now here it got confused which definition
it should inherit.
Vikash Singh
@full_stack_geek
Solution of Diamond Problem.
Although Diamond Problem is a serious issue but we
can create a solution for it which is Interface. Interface
are created by using interface keyword. It contains all
methods by default as abstract we don’t need to
declared as abstract ,compiler will do it implicitly. We
can’t instantiate interface for this we have to use a class
which will implement the interface and will write the
definitions of its all functions.
Vikash Singh
@full_stack_geek
Solution of Diamond Problem.
Although Diamond Problem is a serious issue but we
can create a solution for it which is Interface. Interface
are created by using interface keyword. It contains all
methods by default as abstract we don’t need to
declared as abstract ,compiler will do it implicitly. We
can’t instantiate interface for this we have to use a class
which will implement the interface and will write the
definitions of its all functions.
Vikash Singh
@full_stack_geek
// Java Programs to illustrate
// use of Interface to solve
// Diamond Problem
import [Link].*;
// Interfaces Declared
interface Parent1 {
void funExample();
}
// Interfaces Declared
interface Parent2 {
void funExample();
}
// Inheritance using Interfaces
class test implements Parent1, Parent2 {
public void funExample()
{
[Link]("fun function");
}
}
Vikash Singh
@full_stack_geek
Output :-
fun function
Conclusion
We are able to implement multiple inheritance
through interface just because in case of
interface we does not provide the definition of
function and when class implement that
function then it write definition of function
only once.
Note :- Now you can provide deafult, static and
private method definition inside interface.