public class Main { public static void main(String[] args) { //classic way ExampleAdapterSimple exampleSimple = new ExampleAdapterSimple(); exampleSimple.a(); //Default Method ExampleInterface exampleDefault = new ExampleInterfaceDefault() {}; exampleDefault.a(); } } abstract class ExampleAdapter implements ExampleInterface { @Override public abstract void a(); @Override public void b() { System.out.println("b"); } } class ExampleAdapterSimple extends ExampleAdapter { @Override public void a() { System.out.println("a"); } } interface ExampleInterface { void a(); void b(); } interface ExampleInterfaceDefault extends ExampleInterface { default void a() { System.out.println("a from ExampleInterfaceDefault"); } default void b() { System.out.println("b from ExampleInterfaceDefault"); } }