import org.aspectj.testing.Tester; public class Abstracts { static StringBuffer log = new StringBuffer(); public static void main(String[] args) { new D().m(); Tester.checkEqual(log.toString(), "D.m(), A.m(), A.m(), "); } public void m() { log.append("A.m(), "); } } abstract class C extends Abstracts { public abstract void m(); public void n() { super.m(); } } class D extends C { public void m() { Abstracts.log.append("D.m(), "); super.n(); n(); } }