interface AInterface { default String message() { return "Hallo A"; } } class A implements AInterface { } interface BInterface extends AInterface { default String message() { return "Hallo B"; } } class B implements BInterface { } class C extends B { public String message() { return "Hallo C"; } } class D extends C implements AInterface { } interface Z { static void print() { System.out.println("Hello Z"); }} class ZZ implements Z {} public class Main { public static void main(String[] args) { AInterface a = new A(); System.out.println(a.message()); AInterface b = new B(); System.out.println(b.message()); AInterface c = new C(); System.out.println(c.message()); AInterface d = new D(); System.out.println(d.message()); Z.print(); } }