abstract class A { public abstract D foo(); } interface B { F foo(); } class C extends A implements B { } class D {} class F extends D {}