interface A { default void replace(K v) {} } interface B extends A { void replace(K k); } abstract class AC implements A {} class C extends AC implements B { @Override public void replace(K k) {} } class D extends AC implements B {}