class Test { interface I { default void f() {} } interface J { static void f() {} } static class IJ implements I, J {} static class JI implements J, I {} public static void main(String[] args) { new IJ(). f(); new JI(). f(); IJ.f(); JI.f(); J.f(); } } class Test2 { interface I { static void f(String s) {} } interface J { default void f(T t) {} //another pair default void j(T t) {} static void j(String s) {}; } static class IJ implements I, J {} public static void main(IJ s, J j) { s.f(""); j.j(""); } }