- Java 8 has introduced default method for interfaces, which provides the default implementation of method.
- Prior to java 8 interfaces does not have any default keyword
- There were no conflicts if class inherits multiple interfaces having same method (Prior to Java8).
Example – multiple inheritance in java
Let us take example to understand the multiple inheritanc
- Suppose we have Mother and Father interfaces
- Mother interface has
- cook method
- height method
- Father interface
- runner method
- height method
- Mother & Father interface has common method i.e. height
- Mother interface has
- Son class implements Mother and Father interfaces.
- What all methods it needs to implement ? [Refer Fig 1]
- cook method
- runner method
- height method
What is impact of interface’s default method on multiple inheritance?
- Son class implementing Mother and Father interface, what all methods it will have
- Son class will have default implementation of cook method (if not implemented).
- Its not mandatory to implement the cook method.
- Son class will have default runner method (if not implemented).
- Its not mandatory to implement the runner method
- What about height, its there in both Father & Mother interface?
- Its ambiguous, which default method it should inherits (Mother or Father)
- Son class needs to specify which method it will inherit.
- Son class will have default implementation of cook method (if not implemented).
Program – Impact of interface’s default method on multiple inheritance (Java8)
package org.learn; interface Mother { default void height() { System.out.println("I am short"); } default void cook() { System.out.println("Cooking expert"); } } interface Father { default void runner() { System.out.println("Marathon champion"); } default void height() { System.out.println("I am tall"); } } class Son implements Mother, Father { @Override public void height() { Father.super.height(); } } public class MultipleInheritence { public static void main(String[] args) { Son son = new Son(); son.cook(); son.runner(); son.height(); } }
Output – Impact of interface’s default method on multiple inheritance (java8)
Cooking expert Marathon champion I am tall