Multiple Inheritance Conflict Resolution Rules (JAVA 8)
Java 8 supports multiple inheritance of behaviour using default methods.
However, what-if the multiple default interfaces implemented have default methods with the same signatures. Then which of the default implementations from the many parent interfaces will be invoked in the implementing class.
Java 8 designers have thought of this conflict and have defined resolution rules for such scenarios. Let us now take a look at the possible conflict scenarios and the resolution rules in-built in Java 8 for avoiding them.
Conflict resolution rules for inherited default methods:
Rule 1- Classes take higher precedence than interfaces –

In the above class diagram, Class Demo inherits default method print() from interface A and public method print() from class B. If print() method is invoked in Class Demo then the implementation in super class B is executed.
Rule 2 — Derived interfaces or sub-interfaces take higher precedence than the interfaces higher-up in the inheritance hierarchy-

In the above class diagram, interface B inherits from interface A. Both have a default method print() with the same signature. Class Demo implements B. When print() method is invoked on an instance of class Demo then the implementation in interface B is invoked as it is the lowest child/most derived interface in the inheritance hierarchy.
Rule 3 — In case Rule 1 and Rule 2 are not able to resolve the conflict then the implementing class has to specifically override and provide a method with the same method definition-

In the above class diagram, class Demo inherits from interfaces A & B, both of which have the default implementations of print(). Since, both interfaces A & B are parents of Demo, they are at the same hierarchy level, and hence, Demo class has to provide its own implementation of method print().