interface BaseInterface { default T print() { return null; } abstract public T print2(String a); } interface SecondInterface extends BaseInterface { abstract public T print(); abstract public T print(String a); abstract public T print3(String a); } abstract class SecondClass implements BaseInterface { public T print2(String a){ return null; } abstract public T print3(String a); } class B extends SecondClass implements SecondInterface { @Override public T print3(String a) { return null; } @Override public T print() { return null; } @Override public T print(String a) { return null; } }