Example 1
interface InterfaceA { default void say() { System.out.println("InterfaceA"); } } public class DefaultMethod implements InterfaceA{ public static void main(String[] args) { new DefaultMethod().say(); } }
output
InterfaceA
Example 2 Implementation class overrides the default method
interface InterfaceA { default void say() { System.out.println("InterfaceA"); } } public class DefaultMethod implements InterfaceA{ public void say() { System.out.println("DefaultMethod"); } public static void main(String[] args) { new DefaultMethod().say(); } }
output
DefaultMethod
Example 3
interface InterfaceA { default void say(double m) { System.out.println("InterfaceA"); } } public class DefaultMethod implements InterfaceA{ public void say(int m) { System.out.println("DefaultMethod"); } public static void main(String[] args) { DefaultMethod defaultMethod = new DefaultMethod(); defaultMethod.say(1); defaultMethod.say(1L); } }
output
DefaultMethod InterfaceA
Example 4
interface InterfaceA { default void say() { System.out.println("InterfaceA"); } } interface InterfaceAA extends InterfaceA{ void say(); } public class DefaultMethod implements InterfaceAA{ public static void main(String[] args) { DefaultMethod defaultMethod = new DefaultMethod(); defaultMethod.say(); } }
output error
Example 5
interface InterfaceA { default void say() { System.out.println("InterfaceA"); } } interface InterfaceAA extends InterfaceA{ void say(); } public class DefaultMethod implements InterfaceAA{ public static void main(String[] args) { DefaultMethod defaultMethod = new DefaultMethod(); defaultMethod.say(); } @Override public void say() { System.out.println("defaultMethod"); } }
output
defaultMethod
Example 6
interface InterfaceA { default void say() { System.out.println("InterfaceA"); } } interface InterfaceB { default void say() { System.out.println("InterfaceB"); } } public class DefaultMethod implements InterfaceA,InterfaceB{ public static void main(String[] args) { DefaultMethod defaultMethod = new DefaultMethod(); defaultMethod.say(); } }
output error
Example 7
interface InterfaceA { default void say() { System.out.println("InterfaceA"); } } interface InterfaceB { default void say() { System.out.println("InterfaceB"); } } public class DefaultMethod implements InterfaceA,InterfaceB{ public static void main(String[] args) { DefaultMethod defaultMethod = new DefaultMethod(); defaultMethod.say(); } @Override public void say() { InterfaceA.super.say(); InterfaceB.super.say(); } }
output
InterfaceA InterfaceB