import java.util.HashMap; interface X { /** * @param k foo * @param v bar */ default V putIfAbsent(K k, V v) { return v; } } abstract class X1 implements X {} class X2 extends X1 { @Override public V putIfAbsent(K k, V v) { return super.putIfAbsent(k, v); } } class Foo implements X { @Override void foo(X2 x) { x.putIfAbsent("foo", 0); } }