interface A { public abstract void a(); } abstract class B implements A {} abstract class C extends B {} class D extends C { public void a() { System.out.println("D.a()"); } } public class ResolverTestCase { public static void main(String args[]) { D d = new D(); d.a(); C c = new D(); c.a(); } }